Sunteți pe pagina 1din 204

1

Administracin de Bases de Datos

Autor: Gerardo Romanutti Fecha de Actualizacin: 19/01/04

Administracin de Bases de Datos

Captulo N 1........................................................................................................................................................................................................9

COMPONENTES DE LA ARQUITECTURA DE ORACLE .................................................. 9 Objetivos .....................................................................................................................................................................9 Conexin a una Base de Datos ....................................................................................................................................9 Sesiones .....................................................................................................................................................................10 Instance Oracle ..........................................................................................................................................................10 Area Global del Sistema (SGA).................................................................................................................................11 Procesos Background ................................................................................................................................................11 Base De Datos ...........................................................................................................................................................12 Ficheros de la Base de Datos .....................................................................................................................................12 Proceso de Consulta...................................................................................................................................................13 Shared Pool................................................................................................................................................................13 Library Cache ............................................................................................................................................................13 Dictionary Cache .......................................................................................................................................................13 Zona Buffer de Datos ................................................................................................................................................13 Area Global del Programa (PGA).............................................................................................................................14 Ejecucin de una Sentencia DML .............................................................................................................................14 Segmento de Roolback ..............................................................................................................................................14 Buffer Redo Log........................................................................................................................................................15 (LGWR) Escritor de Anotacin.................................................................................................................................15 (DBWR) Escritor de la Base de Datos.......................................................................................................................15 Proceso de Validacin ...............................................................................................................................................15
Captulo N 2......................................................................................................................................................................................................17

USO DE HERRAMIENTAS DE ADMINISTRACIN ..................................................... 17 Herramientas De Administracin De La Base De Datos. Ejemplos ..........................................................................17 Server Manager. Uso .................................................................................................................................................17 Uso del Server Manager en el modo lnea .................................................................................................................17 Comandos del Server Manager..................................................................................................................................17 SQL*NET..................................................................................................................................................................18 Proceso Listener ........................................................................................................................................................18 Ficheros De Configuracion (Cliente-Servidor)..........................................................................................................19 Bases De Datos Que Usan El Listener.......................................................................................................................20 LSNRCTL .................................................................................................................................................................20 Arrancar Y Parar La Instance ....................................................................................................................................21
Captulo N 3......................................................................................................................................................................................................22

MANEJO DE UNA INSTANCE ORACLE ..................................................................... 22 Mtodos de autentificacin........................................................................................................................................22 Parmetros de inicializacin dinmicos.....................................................................................................................23 Habilitacin e inhabilitacin de una sesin restringida..............................................................................................23 Finalizacin de sesiones V$SESSION..................................................................................................................23 Creacin De Un Fichero De Parametros....................................................................................................................24 Parmetros que deberan ser especificados................................................................................................................25 Parmetros Comnmente Modificados......................................................................................................................25 Etapas Para El Arranque Y La Parada .......................................................................................................................25 Inicio. Comando Startup...........................................................................................................................................26 Cierre. Opciones De Parada.......................................................................................................................................27 Ejemplo ARRANQUE y PARADA DE UNA BBDD ..............................................................................................28 Obtener Y Definir Valores De Parametros ................................................................................................................29 Acceso A Las Vistas Dinmicas De Rendimiento.....................................................................................................30 Visualizacin De Los Valores Actuales De Los Parametros .....................................................................................31 Visualizacin De Los Valores De La Instance ..........................................................................................................31 Parmetros para los Ficheros de Traza ......................................................................................................................31 Parmetros de Inicializacin Dinmica .....................................................................................................................31
Captulo N 4......................................................................................................................................................................................................32

Administracin de Bases de Datos

3 CREACIN DE UNA BASE DE DATOS ...................................................................... 32 Preparacin Del Sistema Operativo Y Requisitos Previos Para La Creacin ............................................................32 Planificacin De La Localizacin De Los Ficheros De La Base De Datos ...............................................................32 Estrucura Del Software Del Directorio Oracle ..........................................................................................................33 Consideraciones Para La Creacin De Una Base De Datos.......................................................................................33 Crear Una Base De Datos Manualmente ...................................................................................................................33 Entorno Del Sistema Operativo .................................................................................................................................33 Preparacin Del Fichero De Parmetros....................................................................................................................34 Arranque Del Instance ...............................................................................................................................................35 Creacin De La Base De Datos .................................................................................................................................35 Despues De La Creacin De La Base De Datos ........................................................................................................37 Ejemplo de Scripts para Creacin de una Base de Datos...........................................................................................37
Captulo N 5......................................................................................................................................................................................................40

CREACIN DE LAS VISTAS DEL DICCIONARIO DE DATOS ...................................... 40 Estructura Del Diccionario De Datos Uso Del Diccionario De Datos. ...................................................................40 Tablas Base Y Vistas Del Diccionario De Datos.......................................................................................................40 Vistas Del Diccionario De Datos...............................................................................................................................40 Construccion Del Diccionario De Datos....................................................................................................................42 El fichero de comandos catalog.sql...........................................................................................................................42 El fichero de commandos catproc.sql........................................................................................................................42
Captulo N 6......................................................................................................................................................................................................43

MANTENIMIENTO DE FICHEROS DE CONTROL ....................................................... 43 Uso Del Fichero De Control ......................................................................................................................................43 Contenido Del Fichero De Control............................................................................................................................43 Parmetros Que Afectan Al Fichero De Control .......................................................................................................43 Obtencion De Informacion Relativa Al Fichero De Control .....................................................................................44 Multiplexacion Del Fichero De Control ....................................................................................................................44
Captulo N 7......................................................................................................................................................................................................45

MANEJO DE TABLESPACES Y FICHEROS DE DATOS ................................................ 45 Estructura Lgica De La Base De Datos ...................................................................................................................45 Relaciones entre la BD, Tablespaces y Ficheros de Datos ........................................................................................45 Relaciones entre Segmentos, Extensiones y Bloques de Datos .................................................................................46 Creacin De Tablespaces...........................................................................................................................................46 Parmetros De Almacenamiento ...............................................................................................................................48 Tablespaces Temporales............................................................................................................................................48 Cambio Del Tamao De Los Tablespaces.................................................................................................................49 Cambio Del Tamao De Los Ficheros De Datos.......................................................................................................50 Cambio Del Tamao Manualmente De Los Ficheros De Datos ................................................................................51 Cambio De La Seleccin De Almacenamiento..........................................................................................................51 Poner Los Tablespaces Offline U Online ..................................................................................................................52 Movimientos De Los Ficheros De Datos...................................................................................................................53 Tablespaces De Solo-Lectura ....................................................................................................................................54 Borrado De Tablespaces ............................................................................................................................................54 Informacin Del Diccionario De Datos .....................................................................................................................55 Consideraciones Para La Creacin De Tablespaces ..................................................................................................57 Movimiento De Objetos Entre TABLESPACES.......................................................................................................57
Captulo N 8......................................................................................................................................................................................................60

ESTRUCUTURA DE ALMACENAMIENTO Y RELACIONES ........................................... 60 Tipos De Segmentos..................................................................................................................................................60 Control Del Uso De Extensiones Por Los Segmentos ...............................................................................................62 Parmetros De Utilizacin Del Espacio Del Bloque..................................................................................................62 Parametros Que Contronan La Concurrencia ............................................................................................................63 Parmetros Que Controlan El Uso Del Espacio De Datos.........................................................................................63 Unin de espacio libre ...............................................................................................................................................64 Unin baja demanda ..................................................................................................................................................65 Administracin de Bases de Datos

4 Bloque De La Base De Datos ....................................................................................................................................65 Obtencin De Informacin De Estructuras De Almacenaje ......................................................................................66 Consulta De Informacin De Segmentos...................................................................................................................66 Obtencion De La Informacion De Extensiones Utilizadas .......................................................................................66 Control De La Informacin De Extensiones Libres...................................................................................................67 Planeamiento De La Localizacin De Los Segmentos ..............................................................................................67 Tipos de Objetos y Fragmentacin ............................................................................................................................67
Captulo N 9......................................................................................................................................................................................................68

MANEJO DE TABLAS .............................................................................................. 68 Almacenamiento De Datos Del Usuario....................................................................................................................68 Estructura De Una Fila ..............................................................................................................................................68 Tipos De Datos Oracle ..............................................................................................................................................68 Tipos De Datos Para El Almacenamiento De Objetos Grandes ................................................................................69 Comparacin Lob y Long..........................................................................................................................................69 Tipo De Dato Rowid..................................................................................................................................................70 Localizacin de una Fila Usando ROWID ................................................................................................................70 Colecciones................................................................................................................................................................71 Varrays ......................................................................................................................................................................71 Tablas Anidadas ........................................................................................................................................................71 Creacin De Una Tabla .............................................................................................................................................72 Directriz Para La Creacin De Tablas .......................................................................................................................73 Definicin De Pctfree Y Pctused ...............................................................................................................................73 Migracion De Filas ....................................................................................................................................................74 Encadenamientos De Filas.........................................................................................................................................74 Copiado De Una Tabla Existente...............................................................................................................................75 Control De Espacio Utilizado Por Las Tablas ...........................................................................................................75 Asignacin Manual De Extensiones ..........................................................................................................................76 Truncar Una Tabla.....................................................................................................................................................76 Borrado De Tablas.....................................................................................................................................................77 Validacin De La Estructura De La Tabla.................................................................................................................77 Anlisis De Todos Un Esquema ................................................................................................................................78 Detencin De La Migracin De Filas ........................................................................................................................78 High Water Mark.......................................................................................................................................................79 Designacion Del Espacio No Utilizado .....................................................................................................................80 Funciones Para Calcular El Tamao De Una Tabla...................................................................................................80 Particionamiento De Tablas.......................................................................................................................................81
Captulo N 10 ...................................................................................................................................................................................................84

GESTION DE USUARIOS ........................................................................................ 84 Vista General .............................................................................................................................................................84 Esquema De La Base De Datos .................................................................................................................................85 Creacion De Usuarios En La BD...............................................................................................................................85 A) Creacion De Un Nuevo Usuario: Autentificacin Del Servidor ...........................................................................85 B) Creacion De Un Nuevo Usuario: Autentificacin Del Sistema Operativo ..........................................................86 Nombre de Usuario para la Autentificacin del Sistema Operativo ..........................................................................86 Creacion De Un Nuevo Usuario Directrices..............................................................................................................87 Alteracion Y Eliminacion De Usuarios De Base De Datos .......................................................................................87 OEM ..........................................................................................................................................................................87 Cambio De Cuota Del Usuario En Tablespace..........................................................................................................88 OEM ..........................................................................................................................................................................88 Borrado De Usuarios .................................................................................................................................................88 Monotorizacion De Informacin Respecto De Usuarios ...........................................................................................89
Captulo N 11 ...................................................................................................................................................................................................90

GESTION DE PRIVILEGIOS .................................................................................... 90 Dos Tipos De Privilegios...........................................................................................................................................90 Privilegios Del Sistema .............................................................................................................................................90 Concesin De Privilegios Del Sistema ......................................................................................................................91 Administracin de Bases de Datos

5 Visualizacion De Privilegios Del Sistema .................................................................................................................92 Restricciones De Privilegios Del Sistema..................................................................................................................93 Revocacin De Privilegios Del Sistema ....................................................................................................................93 Privilegios De Objetos...............................................................................................................................................95 Concesin De Los Privilegios De Objetos.................................................................................................................95 Mostrando Privilegios De Objetos.............................................................................................................................96 Revocacion De Privilegios De Objeto .......................................................................................................................96
Captulo N 12 ...................................................................................................................................................................................................98

GESTION DE ROLES............................................................................................... 98 Creacin Y Modificacin De Roles...........................................................................................................................99 Uso De Roles Predefinidos......................................................................................................................................100 Modificacin De Roles ............................................................................................................................................100 Asignacin De Roles ...............................................................................................................................................101 Establecimiento De Roles Por Defecto....................................................................................................................101 Habilitacin E Inhabilitacin De Roles ...................................................................................................................102 Eliminacin De Roles Desde Los Usuarios .............................................................................................................103 Eliminacin De Roles..............................................................................................................................................104 Directrices Para La Creacin De Roles ...................................................................................................................104 Visualizacin De Informacin Del Rol....................................................................................................................105
Captulo N 13 .................................................................................................................................................................................................107

PERFILES............................................................................................................ 107 Uso De Perfil ...........................................................................................................................................................107 Creacin de un Perfil: ..............................................................................................................................................107 Alteracin Y Borrado De Un PERFIL.....................................................................................................................108 Gestin De Claves ...................................................................................................................................................109 Bloqueos De Cuentas...............................................................................................................................................110 Visualizacin De La Informacin De Claves ..........................................................................................................111
Captulo N 14 .................................................................................................................................................................................................112

MANEJO DE SEGMENTOS ROLLBACK.................................................................... 112 Uso De Los Segmentos Rollback Con Transacciones .............................................................................................113 Crecimiento de los Segmentos Rollback .................................................................................................................113 Contraccin De Los Segmentos Rollback ...............................................................................................................113 Consistencia en la Lectura .......................................................................................................................................114 Planificacin De Segmentos Rollback.....................................................................................................................114 Creacin De Segmentos Rollback ...........................................................................................................................115 Poner Segmentos Rollback Operativos....................................................................................................................115 Cambio De Definiciones De Almacenamiento Del Segmento Rollback .................................................................116 Desasignacin de Espacio en los Segmentos Rollback............................................................................................116 Como Poner Un Segmento Rollback OFFLINE......................................................................................................116 Borrado de Segmentos Rollback..............................................................................................................................117 Obteniendo Configuracin.......................................................................................................................................117 Sesin Bloqueante ...................................................................................................................................................118 Detencin de Sesiones Bloqueantes ........................................................................................................................118
Captulo N 15 .................................................................................................................................................................................................120

MANTENIMIENTO DE LOS FICHEROS REDO LOG .................................................. 120 Uso De Los Ficheros Redo Log...............................................................................................................................120 Uso De Los Ficheros Redo En Lnea.......................................................................................................................120 Grupo de Redo Log Activos ....................................................................................................................................121 Miembros de los Redo Log Activos ........................................................................................................................121 Creacin De Los Ficheros Redo Log Iniciales ........................................................................................................121 Buffer Redo Log Y El Proceso Background LGWR ...............................................................................................121 Log Switches ...........................................................................................................................................................121 Checkpoint...............................................................................................................................................................122 Archivo De Los Ficheros Redo Log ........................................................................................................................122 Modo NOARCHIVELOG .......................................................................................................................................122 Administracin de Bases de Datos

6 Modo ARCHIVELOG.............................................................................................................................................123 Obtencin De Informacin Sobre El Archivado......................................................................................................123 Obtencin de informacin sobre grupos ..................................................................................................................123 Obtencin de informacin sobre grupos y miembros ..............................................................................................123 Control De Log Switches Y Checkpoint .................................................................................................................124 Multiplexado y Mantenimiento de Miembros y Grupos..........................................................................................124 Aadir Miembros Redo Log....................................................................................................................................124 Recolocacin de ficheros Redo Log Activos...........................................................................................................125 Eliminar Grupos Redo Log Activos y Miembros ....................................................................................................125 Borrado de los Miembros Redo Log en lnea ..........................................................................................................125 Limpiando Los Ficheros Redo Log En Lnea ..........................................................................................................125 Planificacin De Los Ficheros Redo Log En Lnea.................................................................................................126 Dimensionar ficheros Redo Log en Lnea ...............................................................................................................126
Captulo N 16 .................................................................................................................................................................................................128

MANEJO DE INDICES........................................................................................... 128 Clasificacin De ndices ..........................................................................................................................................128 ndices NICOS y NO NICOS ............................................................................................................................128 ndices Particionados y No Particionados................................................................................................................128 Formato de las entradas de hojas del indice.............................................................................................................129 Caractersticas de las entradas de hoja del ndice ....................................................................................................129 ndices de Clave Inversa..........................................................................................................................................129 ndice Bitmap ..........................................................................................................................................................130 Estructura de un ndice Bitmap................................................................................................................................130 Comparacion Entre ndices B*Tree E ndices Bitmap ............................................................................................130 Creacin De Indices.................................................................................................................................................131 Creacin de indices de Clave Inversa ......................................................................................................................132 Creacin de Indices Bitmap.....................................................................................................................................132 CREATE_BITMAP_REA_SIZE .........................................................................................................................133 Reorganizacion De Indices ......................................................................................................................................133 Asignacin Y Desasignacin Del Espacio Del ndice .............................................................................................134 Reconstruccin De ndices ......................................................................................................................................134 Control De Validez Del ndice ................................................................................................................................135 Borrado De ndices..................................................................................................................................................135 Obtencin De Informacin ......................................................................................................................................136
Captulo N 17 .................................................................................................................................................................................................137

MANEJO DE SEGMENTOS TEMPORALES................................................................ 137 Uso de los Segmentos Temporales ..........................................................................................................................137 Tipos de Segmentos Temporales .............................................................................................................................137 Segmentos Temporales en un Tablespace Permanente............................................................................................138 Segmentos Temporales en un Tablespace Temporal ...............................................................................................138 Uso de Segmentos de Ordenacin ...........................................................................................................................138 Asignacin de Espacio en Segmentos Temporales..................................................................................................139 Obtencin de Informacin del Segmento Temporal ................................................................................................139
Captulo N 18 .................................................................................................................................................................................................141

AUDITORIA......................................................................................................... 141 Categora de Auditora ........................................................................................ 141 Auditora de Operaciones Privilegiadas...................................................................................................................141 Auditora de la Base de Datos..................................................................................................................................141 Auditora Basada en Valores ...................................................................................................................................141 Uso de la Auditora de la Base de Datos..................................................................................................................142 Habilitar la Auditora de la Base de Datos...............................................................................................................143 Generacion de Datos de Auditora...........................................................................................................................143 Revision de Informacin de Auditora.....................................................................................................................143 Opciones de Habilitacin de Auditora....................................................................................................................144 Auditora de Sentencia............................................................................................................................................145

Administracin de Bases de Datos

7 Auditora de Privilegios...........................................................................................................................................145 Auditoria de Objetos en un Esquema.......................................................................................................................145 Auditora de Objetos del Esquema ..........................................................................................................................146 Opcin DEFAULT de Auditora de Objetos de un Esquema ..................................................................................146 Opciones de Inahilitacin de Auditora ...................................................................................................................147 Visualizacin de los Resultados de Auditora..........................................................................................................148 Localizacin de la Marca de Auditora....................................................................................................................148 Visualizacin de los Resultados de la Auditora......................................................................................................148 Directrices para la Auditora....................................................................................................................................149 Enfoque de la Auditora...........................................................................................................................................149 Mover la Marca de Auditora fuera del Tablespace del Sistema .............................................................................150
Captulo N 19 .................................................................................................................................................................................................151

CARGA DE DATOS ............................................................................................... 151 Insercin de carga directa ........................................................................................................................................151 SQL*Loader ............................................................................................................................................................151 Carga de Datos Utilizando la Insercin de Carga Directa .......................................................................................152 Modo Logging .........................................................................................................................................................152 Carga de Datos Utilizando SQL*Loader .................................................................................................................154 Funciones SQL*Loader ...........................................................................................................................................154 Ficheros Utilizados por SQL*Loader ......................................................................................................................155 Cargas Convencionales y Directas ..........................................................................................................................155 Carga por Va de Acceso Convencional ..................................................................................................................155 Carga por Va de Acceso Directo ............................................................................................................................155 Comparacin De Las Vas De Acceso De Carga Directa Y Convencional .............................................................155 Carga en Tablas Agrupadas .....................................................................................................................................156 Uso de SQL*Loader ................................................................................................................................................157 Palabras Clave del Comando Lnea .........................................................................................................................158
Captulo N 17 .................................................................................................................................................................................................163

UTILIDADES ORACLE DE EXPORTACIN E IMPORTACIN ................................... 163 MTODOS DE EJECUTAR LA UTILIDAD EXPORT.....................................................................................163 LINEA DE COMANDO EXPORT .........................................................................................................................164 CONCEPTOS DE EXPORT DIRECT PATH .....................................................................................................166 CARACTERSTICAS DE EXPORT DIRECT PATH ........................................................................................167 USO DE LA UTILIDAD IMPORT PARA RECUPERACIONES......................................................................169 MODOS DE IMPORT.........................................................................................................................................169 LNEA DE COMANDOS IMPORT....................................................................................................................169 SECUENCIA DE PROCESO IMPORT ..............................................................................................................170
Captulo N 14 .................................................................................................................................................................................................172

RECUPERACIN ORACLE SIN ARCHIVADO ....................................................... 172 RESTAURACIN DE FICHEROS DE DATOS ...................................................................................................173 RMAN .....................................................................................................................................................................174
Captulo N 15 .................................................................................................................................................................................................175

RECUPERACIN COMPLETA CON ARCHIVADO .................................................. 175 RECUPERACIN COMPLETA ............................................................................................................................175 SINTAXIS DE RECUPERACION .........................................................................................................................176 RECUPERACIN UTILIZANDO FICHEROS LOGS ARCHIVADOS...............................................................177 LOCALIZACION DE LOGS ARCHIVADOS PARA APLICAR .........................................................................178 Recuperacin Completa: Mtodo 1 .........................................................................................................................178 Recuperacin Completa: Mtodo 2 .........................................................................................................................179 Recuperacin Completa: Mtodo 3 .........................................................................................................................180 Recuperacin Completa: Mtodo 4 .........................................................................................................................182 RECUPERACIN DESPUS DE UN FALLO HOT BACKUP........................................................................183 BORRADO REDO LOGS CORRUPTOS ..............................................................................................................184 PERDIDA DE UN FICHERO REDO LOG............................................................................................................184 RECREACIN DE REDO LOGS ..........................................................................................................................185 Administracin de Bases de Datos

8 INFORMACIN DEL ESTADO DE RECUPERACION ......................................................................................186 GESTOR DE RECUPERACION............................................................................................................................187 RECUPERACIN COMPLETA COM RMAN .....................................................................................................188
Captulo N 16 .................................................................................................................................................................................................190

RECUPERACIN INCOMPLETA CON ARCHIVADO .............................................. 190 RECUPERACIN CON ARCHIVADO (Recuperacin Incompleta).................................................................191 TIPOS DE RECUPERACIONES INCOMPLETAS ...............................................................................................191 Recuperaciones Basada en el Tiempo......................................................................................................................192 Recuperacin Basada en Cancelacin .....................................................................................................................192 Recuperacin usando un Backup del Fichero de Control ........................................................................................192 Recuperacin Basada en Cambios...........................................................................................................................192 COMANDO RECOVER .........................................................................................................................................192 LNEAS GENERALES DE UNA RECUPERACIN INCOMPLETA .................................................................193 RECUPERACIN BASADA EN TIEMPO ...........................................................................................................194 RECUPERACIN INCOMPLETA USANDO HASTA FECHA ..........................................................................195 RECUPERACIN INCOMPLETA USANDO Hasta Cancel.................................................................................196 RECUPERACIN INCOMPLETA DEL FICHERO CONTROL del BACKUP...................................................197 RECUPERACIN INCOMPLETA DEL FICHERO CONTROL del BACKUP...................................................198 PERDIDAS DE REDO LOGS ONLINE ACTUALES...........................................................................................199 PERDIDAS DE REDO LOGS ONLINE ACTUALES...........................................................................................199 RECUPERACIN A TRAVS DE RESETLOGS.................................................................................................200 RECUPERACIN TABLESPACE EN UN MOMENTO CONCRETO (TSPITR) ...............................................201 GESTOR DE RECUPERACIN............................................................................................................................202 RECUPERACIN INCOMPLETA CON RMAN..................................................................................................203

Administracin de Bases de Datos

Captulo N 1
COMPONENTES DE LA ARQUITECTURA DE ORACLE
Objetivos
Enumerar las estructuras relacionales en la conexin de un usuario a un servidor Oracle. Listar los pasos en el procesamiento de una consulta. Describir los pasos en el procesamiento de una sentencia DML. Describir los pasos en la ejecucin de COMMITS.

El servidor Oracle es un sistema de gestin de Bases de Datos, relacional-objeto, que suministra una aproximacin abierta y compresiva del manejo de informacin.

Usuarios de la Base de Datos Oracle Un usuario de base de datos se puede conectar a un servidor Oracle de una de las siguientes maneras: Conexin directamente en el host, esto es, la mquina que ejecuta el servidor oracle. Usando una conexin a dos niveles (cliente-servidor), donde la mquina en la que el usuario est conectado, est conectada directamente a la que est ejecutando el servidor oracle. Utilizando una conexin a tres niveles, en la que la mquina del usuario se comunica a una aplicacin o un servidor de red, que a su vez est conectado a travs de una red a la mquina que ejecuta el servidor oracle. Los usuarios de la Base de Datos envan comandos SQL directamente utilizando una herramienta como SQL*PLUS, o utilizando una aplicacin que contiene sentencias SQL. El servidor oracle procesa estos comandos y devuelve los resultados a los usuarios.

Conexin a una Base de Datos


Pasos para conectarse a una Base de Datos: Iniciar una herramienta como SQL*Plus o ejecutar una aplicacin desarrollada utilizando una herramienta como Developer/2000 Forms, creando un user process . En un modelo cliente-servidor, la herramienta o la aplicacin se ejecuta en la mquina del cliente. En la configuracin ms bsica, cuando un usuario se anota en el servidor Oracle especificando un nombre de usuario, clave y una base de datos, se crea un proceso en la mquina que es ejecutada en el servidor Oracle. Este proceso recibe el nombre de server process. Este proceso del servidor se comunica con el servidor Oracle en nombre del proceso del usuario que se ejecuta en el cliente.

Administracin de Bases de Datos

10
Sesiones
Una sesin es una conexin especificada de un usuario con un Servidor Oracle. Comienza cuando el usuario es validado por el Servidor Oracle, y finaliza cuando el usuario se desconecta o se produce una interrupcin anormal. Para un usuario de bases de datos son posibles varias sesiones concurrentes si ste se anota desde varias herramientas, aplicaciones o terminales al mismo tiempo. Excepto para alguna herramienta de administracin de bases de datos especializada, el inicio de una sesin en una BD requiere que el servidor Oracle est disponible para ser utilizado.

Soluciones De Problemas El mensaje de error Oracle ORA-01034: Oracle no disponible ocurre cuando un usuario o una aplicacin intenta conectarse a un servidor Oracle que no est disponible para ser utilizado. Para resolver esto, el administrador de la base de datos necesita arrancar el servidor Oracle.

PROCESO DEL USUARIO (conocido como cliente tiene las siguientes propiedades) Se ejecuta en la mquina del cliente, en la mquina donde se conect. Se crea cuando se invoca una aplicacin o herramienta. Ejecuta la herramienta o aplicacin (SQL*PLUS, OEMGR, Developer/2000). Incluye el Programa Interfaz del Usuario (UPI). Genera llamadas al servidor Oracle.

PROCESO DEL SERVIDOR (tiene las siguientes caractersticas:) Se ejecuta en la misma mquina que el servidor Oracle. En la ms sencilla configuracin conocida como un servidor dedicado, cada proceso del servidor da servicio solo a un proceso de usuario. El proceso servidor da comienzo cuando el usuario solicita conexin y generalmente se termina cuando el usuario se desconecta. Cada proceso del servidor utiliza un rea de memoria denominada el Area Global del Programa (PGA). El PGA se describe en una seccin posterior a cada seccin. El proceso del servidor utiliza el Programa Interfaz Oracle (OPI), que es usado para comunicarse con el Servidor Oracle, a instancia del proceso del usuario. El proceso del servidor devuelve la informacin del estado y los resultados al proceso del usuario.

Instance Oracle
Es un medio de acceso a una base de datos Oracle. Siempre abre una y solo una base de datos.

El servidor Oracle consta de una instance y una base de datos Oracle. El Oracle Instance consta de una estructura de memoria llamada Area Global del Sistema (SGA), y de unos procesos background utilizados por el servidor Oracle para manejar una base de datos. Cada Oracle Instance, que se identifica por su ORACLE_SID, puede abrir y utilizar solo una base de datos en cualquier punto y momento.

Administracin de Bases de Datos

11

Area Global del Sistema (SGA)


Las estructuras de memoria de un instance Oracle estn contenidas en la regin de memoria llamada SGA, que contiene datos de informacin de control para el servidor Oracle. La SGA est situada en la memoria virtual del ordenador, donde reside el servidor Oracle. La SGA est compuesta de varias estructuras de memoria, incluyendo: Pool compartida: utilizada para almacenar la sentencia SQL ms recientemente ejecutada y los datos ms reciemientemente utilizados del diccionario de de datos. Buffer de datos : utilizado para almacenar los datos ms recientemente utilizados. Buffer de redo log: utilizado para registrar los cambios hechos en la base de datos. desarrollo 94.113.776 69.616 77.094.912 16.774.216 172.032 Bytes Bytes Bytes Bytes Bytes produccin 145.616.754 69.616 78.098.432 76.108.864 335.872

svrmgrl>show sga Total system global area Fixed size Variable size Database buffers Redo buffers

Procesos Background
Los procesos background de un instance realizan funciones que son necesarias para atender las solicitudes de varios usuarios concurrentes, sin comprometer la integridad y rendimiento de todo el sistema. Cada instance Oracle puede utilizar varios procesos background, dependiendo de la configuracin, pero cada una tiene, por defecto, esos cinco procesos: 1. 2. 3. 4. 5. Escritor de Base de Datos (DBWR): responsable de escribir los cambios de datos en la Base de Datos. Escritor de Redo Log (LGWR): graba los cambios registrados en el buffer redo log sobre los ficheros de redo log. Monitor de Sistema (SMON): su funcin principal es controlar la consistencia e iniciar la recuperacin de la base de datos cuando esta abierta. Monitor de Procesos (PMON): limpia los recursos si uno de los procesos falla. Proceso de checkpoints (CKPT): responsable de actualizar la informacin del estado de la BD cuando los cambios en el buffer de datos sean grabados de forma permanente en la BD.

Administracin de Bases de Datos

12

Base De Datos
Una base de datos Oracle, representa las estructuras fsicas y est compuesta de ficheros del sistema operativo.

Ficheros de la Base de Datos


Los ficheros que constituyen la base de datos contiene datos del usuario e informacin adicional que es necesaria para asegurar una operacin adecuada de la misma. Una Base de Datos Oracle consta de los siguientes tipos de ficheros: Ficheros de datos: almacena el diccionario de datos, objetos del usuario e imgenes anteriores de datos que son modificados por las transacciones actuales. Una BD tiene al menos un fichero de datos. Ficheros redo log: contienen una grabacin de los cambios hechos en la BD para asegurar su reconstruccin de datos en caso de fallos (una BD necesita el menos dos ficheros redo log). Ficheros de control: contienen la informacin necesaria para mantener y verififcar la integridad de la BD (una BD necesita al menos un fichero de control).

Adems de los ficheros de la BD, un servidor oracle utiliza tambin otros. Algunos de ellos son: Ficheros de parmetros: utilizados para definir caractersticas de un instance oracle. Fichero de password: utilizados para autentificar los usuarios privilegiados de la BD. Fichero redo log archivados: copias fuera de control de los ficheros redo log que pueden ser necesarios para la recuperacin al producirse fallos.

Las siguientes secciones explican como el proceso de un servidor usa algunos componentes del instance oracle y la BD, para atender las solicitudes hechas por un usuario.

Administracin de Bases de Datos

13
Proceso de Consulta

Las siguientes etapas son la principales en el proceso de una consulta: 1. Parse: En esta etapa, el proceso de usuario enva la consulta al proceso sevidor con una solicitud de compilacin de la consulta. El proceso servidor controla la validez del comando y utiliza el rea del SGA conocida como shared pool para compilar la sentencia. Al finalizar esta fase, el proceso servidor devuelve el estado, esto es, xito o fallo de la fase parse, al proceso del usuario. Execute: durante esta fase del proceso de una consulta, el proceso del servidor se prepara para recuperar los datos. Fetch: durante esta fase, las filas que son recuperadas por la consulta son devueltas por el servidor al usuario. Dependiendo de la cantidad de memoria utilizada para la transferencia, es necesario uno o ms fecth para transferir los resultados de una consulta al usuario.

2. 3.

Shared Pool
La shared pool es una parte del SGA utilizada durante la fase Parse. El tamao de la shared est especificado en el parmetro de inicializacin, SHARED_POOL_SIZE del fichero de parmetros. Para hacer anlisis en una sentencia SQL, se utilizan los componentes de la shared descritos a continuacin:

Library Cache
La library cache almacena la siguiente informacin acerca de las sentencias SQL ms recientemente utilizadas. Texto de la sentencia. Arbol de anlisis, que es la versin de la sentencia compilada. Plan de ejecucin, que define los pasos a seguir para la ejecucin de la sentencia como se determina en el optimizador.

Dictionary Cache
Es una parte de la shared pool que almacena la informacin de los datos del diccionario ms recientemente utilizada, como definiciones de tablas y columnas, nombres de usuarios, claves y privilegios. Durante la fase Parse, el proceso servidor busca la informacin en el dictionary cache para resolver los nombres de objetos especificados en la sentencia SQL y para validar los privilegios de acceso. Si es necesario, el proceso del servidor inicia la carga de esta informacin a partir del diccionario de datos.

Zona Buffer de Datos


Cuando se procesa una consulta, el proceso del servidor busca los bloques necesarios en la zona de buffer de datos. Si el bloque no se encuentra en los buffer de la BD, el proceso del servidor lee el bloque del fichero de datos y sita una copia en el buffer de datos. Funciones del Area de Buffers de Base de Datos La zona de buffers de datos, es un rea del SGA que es utilizada para almacenar los bloques de datos ms recientes utilizados. El tamao de cada buffer es igual al de un bloque de datos y est especificado en el parmetro DB_BLOCK_SIZE. El nmero de buffers

Administracin de Bases de Datos

14
es igual al valor del parmetro DB_BLOCK_BUFFERS. El servidor Oracle utiliza el algoritmo del menos recientemente utilizado (LRU) para actualizar los buffers a los que haya accedido recientemente yhacer que nuevos bloques sean acomodados en buffers de datos.

Area Global del Programa (PGA)

Proceso servidor

PGA

El rea Global del Programa (PGA) es una regin de la memoria que contiene datos o informacin de control para un nico proceso servidor o un nico proceso background. El PGA es un rea utilizada solo por un proceso Cuando se usa la configuracin de servidor dedicada, el PGA contiene: rea de clasificacin: utilizada por cualquier clasificacin que puede ser necesaria antes de que las filas sean procesadas o devueltas al usuario. Informacin de la sesin: Como los privilegios del usuario para la sesin. Estado del cursor: que indica la etapa en el proceso de varios cursores que son utilizados actualmente en la sesin. Espacio de pila: contiene las variables de la sesin. La PGA es asignada cuando un proceso es creado y se designa cuando este se termina.

Ejecucin de una Sentencia DML


Una sentencia de lenguaje de manipulacin de datos (DML) necesita dos fases de proceso: Parse, que es similar a la fase Parse utilizada para el proceso de una consulta. Ejecucin Fase de Ejecucin Ejemplo: UPDATE emp SET sal=sal*1.1 WHERE empno=7369;

Se ejecutan los siguientes pasos para la ejecucin de la sentencia de actualizacin: 1. El proceso del servidor lee los bloques de datos y rollback de los ficheros de datos, si no se encuentran en la zona de buffers de datos. 2. La copia de los bloques ledos son situados en la zona de buffers de datos. 3. El proceso servidor sita bloqueos en los datos. 4. El proceso servidor graba los cambios que se realicen en el rollback (imagen anterior) y en los datos (nuevo valor) en el buffer redo log. 5. El proceso servidor graba la imagen anterior en el bloque rollback y actualiza el bloque de datos, ambos en el buffer de datos de la base de datos. Los bloques cambiados en el buffer oculto son sealados como dirty buffers-- esto es, no son los mismos que los de los bloques correspondientes en el disco.

Segmento de Roolback

Administracin de Bases de Datos

15

Antes de hacer un cambio el proceso servidor guarda el valor antiguo en un segmento rollbak. Esta imagen es utilizada para: Deshacer cambios si la transaccin es rolled back Asegura que otras transacciones no ven cambios invlidos hechos por la sentencia DML (consistencia en lectura). Recuperar la BD en un estado consistente en caso de fallos. Los recursos rollback, como tablas e ndices, existen en ficheros de datos y partes de ellos son llevados a la zona de buffers de datos cuando sea requerido.

Buffer Redo Log


El proceso servidor graba los cambios hechos por un instante en el buffer redo log, que es una parte del SGA. EL buffer redo log tiene las siguientes caractersticas: Su tamao en bytes est definido por el parmetro LOG_BUFFER. Almacena los registros de redo, que registran los cambios ---esto es, el redo que es cambiado, la localizacin del cambio y su nuevo valor. Una entrada redo registra un cambio, pero no hace distincin entre el tipo de bloque que ha cambiado. As no puede distinguir, por ejemplo, un cambio en un bloque de datos de uno en un ndice o un bloque rollback. El buffer redo log es utilizado secuencialmente, y los cambios hechos por una transaccin pueden ser intercalados con cambios hechos por otras transacciones. Es un buffer circular que es vuelto a utilizar despus de haber sido llenado, pero slo despus de que todas las entradas redo hayan sido grabadas en los ficheros redo log.

(LGWR) Escritor de Anotacin


El log Writer (LGWR) es un proceso background que escribe entradas procedentes del buffer redo log en los ficheros redo log, El LGWR realiza anotaciones secuenciales en el fichero redo log en las siguientes situaciones: Cuando el buffer redo log est lleno en un tercio de su capacidad. Cuando sucede una interrupcin (cada tres segundos) Antes de que DBWR anote los bloques modificados en el buffer oculto de la base de datos en los ficheros de datos. Cuando sea vlida una transaccin COMMIT LGWR Buffer Rdo Log Ficheros Redo Log

(DBWR) Escritor de la Base de Datos


El proceso servidor graba los cambios en buffers de rollback y buffers de datos de la SGA. El escritor de base de datos (DBWR) escribe los buffers sucios del rea de buffers de datos, es decir, en los ficheros de datos. Asegura el nmero suficiente de buffers libres --buffers que pueden ser sobrescritos cuando los procesos servidores necesiten cargar bloques de los ficheros de datosdisponibles en el rea de buffers de datos. El rendimiento de la BD es mejorado ya que los procesos del servidor solo hace cambios en la zona en la zona de buffers y el DBWR difiere la escritura en los ficheros de datos hasta que ocurre uno de los siguientes sucesos: El nmero de buffers sucios alcanza un valor umbral o Un proceso escanea un nmero especificado de bloques cuando busca buffers libres y no encuentra ninguno, o Sucede un timeout, o Cuando sucede un checkpoint. Un checkpoint es un medio de sincronizar la zona de buffers de BD con los ficheros de BD.

Proceso de Validacin
Oracle utiliza un mecanismo de validacin rpido que garantiza que los cambios en la validacin pueden ser recuperados en caso de fallos.

Pasos en el Proceso de Validacin Cuando se realiza una Validacin se suceden los siguientes pasos: 1. 2. El proceso del servidor sita una grabacin de validacin, alo largo el SCN, el buffer redo log. LGWR realiza una anotacin contigua de todas las entradas en el buffer redo log hasta, e incluida, la grabacin de validacin en los ficheros redo log. Despus de este punto, el servidor oracle puede garantizar que los cambios no se perdern incluso en caso de fallos. El usuario es informado de que la Validacin se ha completado. El proceso del servidor graba la informacin para indicar que la transaccin ha finalizado y que los bloqueos de los recursos pueden ser eliminados.

3. 4.

Administracin de Bases de Datos

16

Ventajas de la VALIDACIN Rpida El uso de estos pasos para procesar las VALIDACIONES tiene las siguientes ventajas: Las anotaciones secuenciales en los ficheros log son ms rpidas que la escritura en diferentes bloques del fichero de datos. En los ficheros log se escribe solo la informacin mnima que es necesaria para grabar los cambios, mientras que la escritura en los ficheros de datos requerira todos los bloques de datos que fueran a ser escritos. La BD VALIDAR comporta las grabaciones Redo Log desde mltiples transacciones solicitando validar al mismo tiempo con una simple anotacin. A menos que el buffer redo log est particularmente lleno, solo es necesaria una anotacin sincronizada por transaccin. El tamao de la transaccin no afecta la cantidad de tiempo necesaria para una operacin de VALIDACIN actual.

Administracin de Bases de Datos

17

Captulo N 2
USO DE HERRAMIENTAS DE ADMINISTRACIN
Herramientas De Administracin De La Base De Datos. Ejemplos
Herramienta Modo Lnea del Server Manager svrmgrl Oracle Enterprise Manager Descripcin Una utilidad de modo lnea utilizada para una tarea administrativa, como inicio, finalizado o recuperacin de una BD. Interfaz grfica del usuario para el administrador, monitor y ajuste de mltiples BD. SQL*Loader Utilidad para la carga de datos desde archivos externos en tablas Oracle. Utilidad de importacin o exportacin Utilidad para exportar/importar datos en el formato Oracle. Ficheros de Passwords Utilidad para crear archivos de claves de BD.

Server Manager. Uso


INICIO DEL MODO LNEA EN EL DIRECTOR SERVIDOR

En UNIX En NT

svrmgrL svrmgr30

Inicio y Ejecucin de un fichero de comandos En UNIX svrmgrL command=@credb.sql svrmgrL command=CONNECT scott/tiger svrmgr30 command=@u16.sql

En NT

Uso del Server Manager en el modo lnea


Utilizar el modo lnea para ejecutar los comandos del Server Manager descriptos en la siguiente seccin. Adems puede ejecutar las sentencias SQL y el cdigo PL/SQL.

Comandos del Server Manager


Categora Comando que no necesita conexin con la Base de Datos Comandos EXIT REMARK SET SHOW SPOOL Comandos que necesitan conexion a la Base de Datos y CONNECT/DISCONNECT privilegios oracle. DESCRIBE EXECUTE SHOW ERRORS SHOW PARAMETER SHOW SGA Comandos que necesitan privilegios especiales Oracle. CONNECT.. AS SYSDBA CONNECT.. AS SYSOPER ARCHIVE LOG RECOVER DATABASE STARTUP/SHUTDOWN

Administracin de Bases de Datos

18
Comandos Del Server Manager Comando EXIT REMARK SET SHOW SPOOL CONNECT/DISCONNECT DESCRIBE EXECUTE SHOW ERRORS SHOW PARAMETER SHOW SGA CONNECT/AS SYSDBA ARCHIVE LOG Descripcin Sale del Server manager modo lnea o cierra una Worksheet SQl. Introduce un comentario, tpicamente en los ficheros de comandos SQl. Selecciona o cambia caractersticas del comando actual de la sesin del modo lnea. Muestra la seleccin efectiva en ese momento. Habilita o inhabilita spooling de salida a un fichero especfico. Se conecta o desconecta de una BD. Describe una funcin, paquete, procedimiento o tabla, objeto o visualizacin. Ejecuta una sentencia PL/SQL en lnea. Muestra los errores generados desde la ltima compilacin de un procedimiento, paquete o funcin. Muestra los valores actuales de uno o ms parmetros de inicializacin. Muestra la informacin respecto del SGA del instance actual. Habilita la conexin privilegiada a la BD. Inicia o detiene el archivado automtico de los ficheros redo log, archiva manualmente los ficheros redo log especificados o muestra la informacin relativa a los ficheros redo log. Realiza la recuperacin media en uno o ms tablespaces, o en la BD entera. Inicia o finaliza la ejecucin actual de un instance Oracle.

RECOVER DATABASE STARTUP/SHUTDOWN

SQL*NET
Permite la configuracin cliente-servidor y servidor-servidor a travs de cualquier protocolo. Cuando se requiere: El cliente y el servidor se comunican a travs de la red. Dos Bases de Datos se comunican a travs de la red. Dos Bases de Datos se comunican a travs de la red. Dos Bases de Datos se quieren comunicar en la misma mquina. El cliente quiere usar conexiones Multithreades Server.

Proceso Listener
Puede escuchar sobre una o ms Bases de Datos en una mquina. Identifica peticiones de conexiones a travs de la red y realiza todo el proceso de conexin al servidor. Se controla a travs de lnsrctl.

Asocia el cliente con un proceso servidor para poder ejecutar las peticiones del cliente. Se puede crear ms de un listener por servidor para balancear la carga.

NET 8 ASSIST Herramienta para configurar los distintos nodos de la red Oracle.

FORMATO DE CONFIGURACIN Keyword=value Ejemplo Protocolo=tcp (Keyword1= (Keyword2=value) (Keyword3=value)) Ejemplo (Address= (community=us.oracle.com) (protocol=tcp))

Administracin de Bases de Datos

19
Ficheros De Configuracion (Cliente-Servidor)

Cliente TNSNAMES SQLNET

Servidor TNSNAMES SQLNET LISTENER

TNSNAMES.ORALista de nombres de servicios y direcciones de destino. SQLNET.ORA Informacin adicional sobre parmetros de seguridad o de diagnstico.

Los ficheros del cliente en el servidor slo son necesarios si el servidor va a realizar conexiones externas. LISTENER.ORA Incluye nombres de servicios y direcciones de todas las BD que est escuchando el proceso. Tambin ciertos parmetros de control y diagnstico.

TNSNAMES.ORA Contenido: Nombres de servicios TNS, lo cual son alias que manejan descriptores de conexin. Esta en el cliente y su localizacin se puede controlar con la variable TNS_ADMIN. Ejemplo: PROD= (DESCRIPTION= (ADDRESS= (COMMUNITY=SALES.COM) (PROTOCOL=SPX) (SERVICE=STEALTH_LSNR)) (CONNECT_DATA=(SID_PROD)))

PROD: DESCRIPTION: ADDRESS: COMMUNITY: PROTOCOL: SERVICE: CONNECT_DATA: SID:

nombre del servicio. indica un descriptor de conexin para un servicio del TNS. indica que va a describir una especificacion de servicio. nombre de la comunidad que contiene el servicio. protocolo de red utilizado para comunicar el servicio. nombre especfico del servicio SPX. indica que siguen datos de aplicacin. identificador del sistema (SID) de la BD en el servidor.

Ejemplo de aplicacin: SQLPLUS scott/tiger@PROD

LISTENER.ORA El listerner debe estar activo en el servidor de la BD antes que se intenten realizar conexiones desde los clients remotos. Contenido: Nombre del listener. La direccin del listener. BD que usan el listener. Parmetros del listener.

Administracin de Bases de Datos

20
Ejemplo: LISTENER=(ADDRESS_LIST= (ADDRES= (PROTOCOL=ipc) (KEY=produccion)) (ADDRESS= (PROTOCOL=ipc) (KEY=prod.)) (ADDRESS= (PROTOCOL=tcp) (HOST=testar) (PORT=1521))) SID_LIST_LISTENER=(SID_DESC= (SID_NAME=prod.) (ORACLE_HOME=/sur/oracle/prod.)))

Bases De Datos Que Usan El Listener


SIDs de las bases de datos. Parmetros especficos que indican la localizacin de los ejecutables de Oracle. Parmetros de procesos servidores.

LSNRCTL
Arranca y para el proceso listener en el servidor. LSNRCTL command listener_name

Comandos: START STOP STATUS TRACE OFFUSERADMIN (activa la opcin de traza a nivel del listener) USER (proporciona un nivel limitado de traza. ADMIN proporciona uno ms detallado) SET PASSWORD (activa el uso de comandos slo para el administrador) SERVICES (da informacin sobre los servicios que el listener controla) VERSIN (versin para el listener, TNS y el adaptador de protocolo) HELP (referencia de ayuda)

Ficheros De Comandos cat*.sql dbms*.sql prvt*.sql utl*.sql catlogo de informacin del diccionario de datos. especificaciones del paquete de BD. cdigo de paquete de BD. vistas y tablas para utilidades de BD.

Server Manager El modo lnea del Server Manager es muy til para la realizacin de operaciones desatendidas, como ejecucin de trabajos nocturnos por lotes o ficheros de comandos. Adems puede usar el modo lnea cuando no hay disponible una interfaz grfica. svrmgrl inicia el modo lnea (unix)

Administracin de Bases de Datos

21
Uso del Server Manager en modo lnea: Utilizar el modo lnea para ejecutar los comandos del Server Manager descritos en la seccin anterior. Adems se puede ejecutar las sentencias SQL y el csigo PL/SQL.

Introduccin de comandos del Server Manager: Los comandos de una sola lnea del Server Manager no necesitan puntuacin o finalizadores. Si se extiende ms de una lnea, se utiliza \ al final de cada una. svrmgrl> DESCRIBE \ 2> scott.emp

Introduccin de cdigo SQL o PL/SQL Se puede introducir una sentencia de lnea nica o lnea mltiple SQL en el modo lnea, al finalizar poner ; o slo un slach / en la ltima lnea.

Ejecucin de ficheros de comandos En modo lnea se puede ejecutar ficheros de comandos utilizando el comando @ , por ejemplo para ejecutar el fichero de comando credb.sql introducir la sentencia @CREDB.sql

Arrancar Y Parar La Instance


lsnrctl start lsnrctl stop Ejemplo en UNIX de arrancar y parar la instance y la BBDD:

LSNRCTL START SVRMGRL CONNECT INTERNAL STARTUP EXIT SQLPLUS

SVRMGRL CONNECT INTERNAL SHUTDOWN EXIT LSNRCTL STOP

Administracin de Bases de Datos

22

Captulo N 3
MANEJO DE UNA INSTANCE ORACLE
Durante el inicio de una BBDD se suceden los siguientes pasos: 1. arranque de una instance lsnrctl start 2. montar la BBDD startup mount 3. abrir la BBDD alter database mount Para parar la BBDD: 1. cerrar la BBDD shutdown .... 2. desmontar la BBDD 3. parar la instance lsnrctl stop

Usuarios administradores de BBDD (tienen asignados el rol DBA) SYS SYSTEM

SYS: propietario de la informacin del diccionario de la BBDD SYSTEM: propietario de tablas internas adicionales utilizadas por las herramientas oracle.

Mtodos de autentificacin
En algunos casos el administrador de la BBDD necesita un mtodo especial de autentificacin, dado que la BBDD puede no estar abierta especialmente para operaciones de arranque y parada. Puede elegir la autentificacin del sistema operativo o los ficheros de claves para autentificar los administradores de la BBDD.

Autentificacin del Sistema Operativo UNIX 1. 2. 3. 4.

El usuario tiene que ser miembro del grupo UNIX, normalmente llamado DBA, que es creado antes de que sea instaldo el servidor oracle. El instalador asigna privilegio de administrador y operador de BBDD oracle a este grupo unix. Visualizar ficheros /etc/group y /etc/passwd para determinar los miembros del grupo UNIX Asegurarse de que el parmetro REMOTE_LOGIN_PASSWORDFILE est en NONE Conectar a la BBDD con el privilegio SYSDBA o SYSOPER connect / as SYSDBA connect / as SYSOPER

NT: 1. 2. 3. 4. Crear un nuevo grupo local de usuarios windows NT, llamado ORA_<SYS>_DBA y ORA_<SID>_OPER que es especfico de una instance o ORA_DBA y ORA_OPER que es especfico de un instance. Aadir un usuario del sistema operativo NT a ese grupo. Poner REMOTE_LOGIN_PASSWORDFILE a NONE Conectarse a la BBDD con el privilegio SYSDBA o SYSOPER. CONNECT / AS {SYSDBA | SYSOPER }

Nota: para conectar con un servidor windows NT desde un cliente local, remoto windows NT o windows 95, tiene que star instalado NET8 en ambos clients y servidor.

Uso de la autentificacin del fichero 1. 2. Crear el fichero de password utilizando la utilidad ORAPWD. $orapwd file=$ORACLE_HOME/dbs/orapwu15\password=admin. entrie=5 Definir REMOTE_LOGIN_PASSWORDFILE a EXCLUSIVE o SHARED. Utilizar el siguiente comando para conectar a una BBDD: CONNECT INTERNAL/ADMIN

(entrie nmero mx. de adm. de la BBDD)

Crear el fichero de password utilizando la utilidad ORAPWD en UNIX o ORAPWD80 en NT. Definir el parmetro REMOTE_LOGIN_PASSWORDFILE a EXCLUSIVE o SHARED. a. EXCLUSIVE: indica que slo una instance puede utilizar el fichero de password y que este contiene otros nombres adems de SYS y SYSTEM. b. SHARED: indica que ms de una instance puede utilizar el fichero de password (los nicos usuarios reconocidos por el fichero de password son SYS e INTERNAL). Conectarse a la BBDD. SVRMGRL>CONNECT INTERNAL/ADMIN

3.

Administracin de Bases de Datos

23

Cambiar la calve interna Utilice la utilidad ORAPWD en UNIX para borrar y crear el fichero de password Use la utilidad ORADIM(= en NT para borrar y crear un fichero nuevo de password.

Parmetros de inicializacin dinmicos


Algunos parmetros de inicializacin pueden ser modificacdos mientras se ejecuta la instance. ALTER SESSION SET SQL_TRACE=true; ALTER SYSTEM SET TIMED_STATISTICS=true; ALSTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;

ALTER SESSION modifica solo el valor del parametro para la sesin que ejecuta el comando. ALTER SYSTEM cambia globalmente el valor del parmetro. ALTER SYSTEM DEFERRED modifica el valor para las sesiones futuras que se conectan a la BBDD. Consultar las vistas V$PARAMETER y V$SYSTEM_PARAMETER, las columnas siguientes : ISSES_MODIFICABLE indica si el parmetro puede ser modificado por ALTER SESSION. ISSYS_MODIFICABLE indica si el parmetro puede ser modificado por ALTER SYSTEM. ISMODIFIED ndice ALTER SESSION MODIFICADA con el valor modified y ALTER SYSTEM MODIFICADA con el valor modified.

V$PARAMETER muestra los valores actuales de la sesin. V$SYSTEM_PARAMETER muestra los valores actuales del sistema independiente de la sesin.

Habilitacin e inhabilitacin de una sesin restringida


Utilizar el comando STARTUP para restringir el acceso a una BBDD STARTUP RESTRICT Utilizar el comando ALTER SYSTEM para situar la instance en el modo restringido. ALTER SYSTEM ENABLE RESTRICTED SESSION;

Sesin restringida Util para mantenimiento, importacion y exportacion de la BBDD puede ser arrancada en el modo restringida de forma que solo este disponible para usuarios con privilegio restricted session. La BBDD puede ser puesta en modo restringido utilizando el comando ALTER SYSTEM. ALTER SYSTEM {ENABLE | DISABLE} RESTRICTED SESSION donde: enabled restricted habilita conexiones futuras para solo para usuarios que tienen el privilegio RESTRICTED SESSION.

DISABLE RESTRICTED SESSION habilita a todos los usuarios.

Finalizacin de sesiones V$SESSION


ALTER SYSTEM KILL SESSION sid,serial#

Efectos de KILL SESSION Rollback la transaccin actual del usuario. Libera todas las tablas retenidas o bloqueos de filas. Libera los recursos.

Administracin de Bases de Datos

24

Creacin De Un Fichero De Parametros


El fichero de parmetros comnmente llamado fichero INIT<SID>.ora, es un fichero de texto que puede ser mantenido utilizando un editor de un sistema operativo estndar. Por defecto, est localizado en el directorio $ORACLE_HOME/dbs en una mquina UNIX. El fichero de parmetros solo se lee durante el inicio del instance. Si este es modificado, cerrar y volver a iniciar el instance para hacer efectivo el cambio de valores en el nuevo parmetro.

Para crear o modificar una configuracin almacenada: 1. Utilice el Instance Manager. 2. Seleccionar las Parmetros de Inicializacin. 3. Elegir Salvar en una de las hojas de propiedades. 4. Introducir un nombre de configuracin en la hoja de propiedades de Configuracin.

Uso de Parmetros Los parmetros en el fichero init <SID>.ora pueden tener un efecto significativo en el rendimiento, algunos necesitan ser modificados de las siguientes formas para sistemas de produccin: Cambiar el tamao de los componentes del rea Global del Sistema (SGA) para optimizar el rendimiento. Seleccionar valores por defecto de la BD y del instance. Seleccionar los lmites de la BD. Definir (solo en la creacin de BD) varios atributos fsicos de ella, tales como el tamao de bloque de la misma. Especificar los ficheros de control, ficheros log archivados y la localizacin de ficheros de traza.

Reglas para especificar Parmetros Especificar los valores en el formato siguiente: keyword=valor. Todos los parmetros son opcionales. El servidor tiene un valor por defecto para cada parmetro. Los parmetros pueden ser especificados en cualquier orden. Las lneas de comentario empiezan con el smbolo #. Encerrar los parmetros entre comillas dobles para incluir caracteres literales. Pueden ser incluidos ficheros adicionales con la clave IFILE. Si el caso es significante para el sistema operativo, tambin lo es para los nombres de fichero. Los valores mltiples se encierran entre parntesis y se separan por comas.

Ejemplo del Fichero de Parmetros


# Fichero de Inicializacin Parmetro: initU15.ora db_name = U15 control_file = (/DISK1/control101.con, /DISK2/control102.con) db_lock_size = 8192 db_lock_buffers = 2000 shared_pool_size = 30000000 log_buffer = 64K processes = 50 db_files = 100 log_files = 10 max_dump_file_size = 10240 background_dump_dest = (/home/disk3/user15/BDUMP) user_dump_dest = (/home/disk3/user15/UDUMP) core_dump_dest = (/home/disk3/user15/CDUMP) rollback_segments = (r01, r02, r03, r04, r05, r06, r07, r08)

Administracin de Bases de Datos

25
Parmetros que deberan ser especificados
Parmetro BACKGROUND_DUMP_DEST COMPATIBLE CONTROL_FILES DB_BLOCK_BUFFERS DB_NAME SHARED_POOL_SIZE USER_DUMP_DEST Descripcin Lugar donde los procesos de background escriben los ficheros de traza. Versin del servidor con el que este instance debera ser compatible. Por defecto es 8.0.0 Nombres de los ficheros de control. Nmero de bloques ocultos en el SGA. Por defecto y el mnimo es 50 buffers. El identificador de la BD es de 8 caracteres o menos. Es el nico parmetro necesario cuando se crea una BD nueva. Tamao en bytes del pool compartido. Por defecto es 3500000 Lugar en que los ficheros de traza del usuario son creados.

Parmetros Comnmente Modificados


Parmetro IFILE LOG_BUFFER MAX_DUMP_FILE_SIZE PROCESSES SQL_TRACE TIMED_STATISTICS Descripcin Nombre de otro fichero de parmetros para que sea embebido dentro del fichero de parmetros actual. Es posible hasta tres niveles de red. Nmeros de bytes situados en el buffer redo log del SGA. Tamao mximo de los ficheros de traza, especificado como nmero de bloques del sistema operativo. Nmero mximo de procesos del sistema operativo que pueden ser conectados simultneamente a este instance. Habilita o inhabilita la utilidad trace SQL para cada sesin de usuario. Habilita o inhabilita medidas de tiempo en los ficheros trace y en las pantallas del monitor.

Etapas Para El Arranque Y La Parada

Etapas de arranque Cuando se inicia la BD, se puede elegir el estado en el que se inicia. Los siguientes escenarios describen las diferentes etapas en el inicio de un instance: ARRANQUE DEL INSTANCE (STARTUP NOMOUNT) Normalmente Ud. arrancara un instance sin montar un BD, solo durante la creacin de la misma o creacin de nuevo de los ficheros de control. El inicio de un intance incluye las siguientes tareas: Lectura del fichero de parmetros init<SID>.ora Asignar memoria al SGA. Inicio de los procesos background. Apertura de los ficheros trace y ALERT. La base de datos tiene que ser nombrada con el parmetro DB_NAME en el fichero init<SID>.ora o con el comando STARTUP.

Administracin de Bases de Datos

26

MONTAJE DE LA BD (STARTUP MOUNT) Para realizar operaciones especficas de mantenimiento Ud. inicia un instance y monta una BD, pero no la abre. Por ejemplo, la BD tiene que estar montada pero no abierta durante las siguientes tareas: Volver a nombrar ficheros de datos. Habilitar e inhabilitar las opciones de archivo redo log. Realizando la recuperacin total de la BD. El montaje de una BD incluye las siguientes tareas: Asociar una BD con un instance iniciado previamente. Situar y abrir los ficheros de control especificados en el fichero de parmetros. Leer los ficheros de control para obtener los nombres y estado de los ficheros de datos y de los redo log (No obstante, no se realizan controles para verificar la existencia de ficheros de datos y ficheros redo log operativos en ese momento).

ABRIR LA BD (STARTUP OPEN) La operacin Normal de la BD significa que un instance est iniciado y la BD montada y abierta, esto permite a cualquier usuario vlido conectarse a la BD y realizar las operaciones tpicas de acceso a datos. La apertura de la BD incluye las siguientes tareas: Abrir los ficheros de datos operativos. Abrir los ficheros redo log operativos. Si cualquiera de los ficheros operativos o redo log no estn presentes cuando intenta abrir la BD., Oracle devolver un error. Durante la etapa final, Oracle verifica que todos los ficheros operativos y redo log pueden ser abiertos, y controla la consistencia de la BD. Si es necesario, el proceso background System Monitor (SMON) inicia la recuperacin del instance.

Recuperacin Instance Un fallo en Instance ocurre cuando este no puede continuar su trabajo. Por ejemplo, si hay un fallo en el sistema operativo, el proceso background SMON realiza automticamente la recuperacin instance cuando la BD se vuelve a abrir. Esto es, el fichero redo log es utilizado para recuperar los datos validados en la zona de buffer de datos que fueron perdidos debido al fallo del instance. La recuperacin instance consta de los siguientes pasos: 1. Rolling Forward para recuperar los datos que no han sido grabados en los ficheros de datos pero que lo han sido en los redo log operativos. 2. Abrir la BD, en lugar de esperar que todas las transacciones sean deshechas antes de hacer que la BD est disponible. (Cualquier dato que no est bloqueado por transacciones no recuperadas, est disponible inmediatamente). 3. Rolling Back transacciones no validadas por SMON y por los procesos del servidor individuales cuando acceden a datos bloqueados.

Etapas para Cerrar Hay que realizar tres pasos para cerrar un instance y la BD a la que est conectado: CIERRE DE LA BASE DE DATOS El primer paso es cerrar la BD. Cuando est cerrada, Oracle escribe los cambios en los buffers y las entradas en los ficheros y redo log operativos. Despus de esta operacin, Oracle cierra todos los ficheros y redo log operativos. Los ficheros de control permanecen abiertos mientras se cierra una base de datos pero permanece montada. DESMONTAR UNA BASE DE DATOS El segundo paso es desmontar la BD desde un instance. Despus de desmontar una BD, permanece solo el instance. Cuando se desmonta una BD, Oracle cierra sus ficheros de control. CIERRE DEL INSTANCE El paso final para cerrar una BD, es cerrar el instance. Cuando lo hace, se cierran los ficheros trace y ALERT, el SGA se libera y se terminan los procesos background.

Inicio. Comando Startup


ARRANCA INSTANCE Y ABRE LA BASE DE DATOS STARTUP PFILE=/DISK1/initU15.ora

Administracin de Bases de Datos

27

Sintaxis: STARTUP [FORCE] [RESTRICT] [PFILE=filename] [EXCLUSIVE | PARALLEL | SHARED] [OPEN [RECOVER] [database] | MOUNT | NOMOUNT] Donde: OPEN MOUNT NOMOUNT EXCLUSIVE PARALLEL SHARED PFILE=parfile FORCE RESTRICT RECOVER habilita a los usuarios acceso a la BD. monta la BD para ciertas actividades DBA pero no permite el acceso a la misma a usuarios. crea el SGA e inicia los procesos background pero no permite el acceso a la BD. permite el acceso a la BD slo al instance actual. permite el acceso a la BD a mltiples instance (utilizado con el Servidor Paralelo Oracle). ofrece un trmino alternativo para PARALLEL. permite que se utilice un fichero de parmetros distinto del por defecto para configurar el instance. aborta la instance en ejecucin antes de realizar un arranque normal. habilita el acceso a la BD solo a usuarios con privilegio RESTRICTED SESSION. empieza la recuperacin del medio cuando la BD arranca.

OEM 1. 2. 3. 4. Utilice el Instace Manager. Elegir Base de datos->Inicio. Elegir el modo de arranque y dar la informacin pfilename. Hacer clic en OK.

Cierre. Opciones De Parada


Modo de Parada Permite nuevas conexiones Espera hasta que finalicen sesiones actuales Espera hasta que finalicen transacciones actuales Fuerza un checkpoint y cierra ficheros Modo finalizacin: A Abortar T Transaccional A X X X X x X X I X x T X N

I Inmediato N Normal

X No Si

Cerrar la BD para hacer backups off-line del sistema operativo, de todas las estructuras fsicas y para modificar los parmetros de inicializacin. Para cerrar un instance, utilice el siguiente comando: SHUTDOWN [NORMAL | TRANSACCIONAL | INMEDIATE | ABORT]

OEM 1. 2. 3. 4. Utilice el Director Instance. Elegir Base de Datos->Cerrar. Elegir el modo cerrar. Hacer clic en OK.

Cierre NORMAL Es el modo de cerrado por defecto. Procede con las siguientes condiciones: No se permiten nuevas conexiones. El servidor Oracle espera que todos los usuarios se desconecten antes de terminar el cierre. Oracle cierra y desmonta la BD antes de cerrar el instance. El siguiente arranque no requiere una recuperacin instance.

Administracin de Bases de Datos

28

Cierre TRANSACCIONAL Un cierre transaccional previene a los clientes de la prdida de trabajo. Procede con las siguientes condiciones: Ningn cliente puede iniciar una nueva transaccin en este instance particular. Un cliente es desconectado cuando se finaliza la transaccin que est en proceso. Cuando todas las transacciones han sido acabadas, sucede un cierre inmediato. El siguiente arranque no requiere una recuperacin instance. Cierre INMEDIATO Un cierre inmediato de la BD, procede con las siguientes condiciones: Las sentencias SQL actuales que han empezado el procesado con Oracle no se completan. El servidor Oracle no espera a usuarios actualmente conectados a la BD para desconectar. Oracle deshace las transacciones activas y desconecta todos los usuarios conectados. Oracle cierra y desconecta la BD antes de cerrar el instance. El siguiente arranque no requiere una recuperacin instance. Cierre ABORTADO Si las opciones de cierre normal y cierre inmediato no funcionan, puede abortar el actual instance de la BD. El abortado del instance procede con las siguientes condiciones: Las sentencias SQL actuales que han empezado el procesado con Oracle son finalizadas inmediatamente. El servidor Oracle no espera a usuarios actualmente conectados a la BD para desconectar. Las transacciones no validadas no son deshechas. El instance se termina sin cerrar los ficheros. El siguiente arranque necesitar una recuperacin del instance. Despus de ser ejecutado el paso primero, el desplazamiento nos muestra la secuencia de sucesos cuando son introducidos los distintos comandos SHUTDOWN. Los pasos 1 a 4, describen una transferencia de fondos desde la cuenta de un banco a otra. 1. Consulta la cuenta para controlar los saldos de la misma. 2. Ejecuta el comando INSERT y otro DELETE para transferir los fondos desde la cuenta de un banco a otro. 3. Ejecuta en COMMIT para finalizar la transaccin satisfactoriamente. 4. Se desconecta de Oracle. Con un cierre normal, Oracle espera que todos los usuarios se desconecten antes de completar el cierre. Con un cerrado transaccional, Oracle espera hasta que el paso 3 se hay completado, esto es, que se complete la transaccin, procediendo a continuacin con el cierre inmediato. Cuando sucede un cierre inmediato, Oracle termina el actual comando SQL en el paso 2 y deshace la transaccin activa. Cuando sucede un cierre abortado, Oracle termina el comando actual SQL pero la transaccin activa no es deshecha.

Ejemplo ARRANQUE y PARADA DE UNA BBDD


Arranque Requiere tres pasos y combina la creacin de una instancia y el arranque de la BBDD: 1. Arrancar una instance: Creacin de los procesos background. Creacin de la SGA segn los parmetros del INIT.ORA SVRMGRL>CONNECT INTERNAL SVRMGRL>STARTUP NOMOUNT Montar una BBDD: La BBDD se conecta a la instance. Se abren los archivos de control. Una BBDD montada y no abierta permite acciones del archivo redolog, conmutacin del modo de archivado, recuperacin completa de la BBDD, renombrado de archivos de la BBDD. SVRMGRL>ALTER DATABASE MOUNT Abrir una BBDD: Disponible para uso normal. Se abren todos los archivos log y de datos. Recuperacin parcial. SVRMGRL>ALTER DATABASE OPEN

2.

3.

Administracin de Bases de Datos

29

Alternativas de Arranque Arranque con un solo comando: SVRMGRL>STARTUP Arranque solo para el administrador: SVRMGRL>STARTUP RESTRICT Arranque forzado: SVRMGRL>STARTUP FORCE Utilizando un archivo INIT.ORA distinto: SVRMGRL>STARTUP pfile=initxx.ora

Parada Existen tres modos de parar una BBDD: 1. Normal: SVRMGRL>CONNECT INTERNAL SVRMGRL>SHUTDOWN Espera por los usuarios conectados actualmente. No permite nuevas conexiones. Cierra y desmonta la BBDD. Para la instancia. No se efectua recuperacin durante el posterior arranque. Inmediata: SVRMGRL>CONNECT INTERNAL SVRMGRL>SHUTDOWN INMEDIATE Las conexiones actuales se completan. No se efectuan nuevas conexiones. El PMON termina todas las sesiones y restaura todas las transacciones no validadas. Cierra y desmonta la BBDD. Para la instance. No se efectua recuperacin durante el posterior arranque. Abortando: SVRMGRL> CONNECT INTERNAL SVRMGRL>SHUTDOWN ABORT Parada drstica, no espera a que las conexiones actuales se completen. No se efectuan rollback. Cierra y desmonta la BBDD. Para la instance. Es necesaria la recuperacin durante el posterior arranque.

2.

3.

Obtener Y Definir Valores De Parametros


VISTAS DINMICAS DE RENDIMIENTO Mantenidas por el servidor Oracle y actualizadas constantemente. Contiene datos en el disco y estructuras de memoria. Contiene datos tiles para el ajuste del rendimiento. Tienen sinnimos pblicos con el prefijo v$

Estas vistas se llaman vistas dinmicas de rendimiento ya que se actualizan constantemente mientras la BD se abre y est en uso. Sus contenidos se relacionan primeramente con el rendimiento. Proporcionan datos relativos a la estructuras internas del disco y estructuras de memoria y pueden ser accedidas por el administrador de datos.

Administracin de Bases de Datos

30
Las vistas dinmicas de rendimiento son identificadas por el prefijo V_$, aunque Oracle proporciona sinnimos pblicos con el prefijo V$. Una vez que el instance es arrancado en la etapa NOMOUNT, son accesibles las vistas V$ que pueden ser leidas desde la memoria. Las vistas que leen datos desde el fichero de control necesitan que la BD est montada. Las vistas V$FIXED_TABLE muestra todas las vistas dinmicas de rendimiento.

Acceso A Las Vistas Dinmicas De Rendimiento


OPEN Diccionario Datos

MOUNT Vistas Dinmicas de Rendimiento que leen datos de disco NOMOUNT Vistas Dinamicas de rendimiento leidos de memoria SHUTDOWN

EJEMPLO V$PARAMETER V$SGA V$OPTION V$PROCESS V$SESSION V$VERSIN V$INSTANCE V$THREAD V$CONTROLFILE V$DATABASE V$DATAFILE V$DATAFILE_HEADER V$LOGFILE

SGA

Fichero de Control

Vistas Dinmicas de rendimiento (Accesible en la etapa NOMOUNT) V$PARAMETER V$SGA V$OPTION V$PROCESS V$SESSION V$VERSION V$INSTANCE

Descripcion Contiene informacin de parmetros de inicializacin. Contiene informacin totalizadora del SGA. Lista opciones que son instaladas con el servidor oracle. Contiene informacin relativa a los procesos activos actuales Lista informacin de la sesin actual. Lista el nmero de versin y los componentes. Muestra el estado del instance.

Administracin de Bases de Datos

31
Vistas Dinmicas de rendimiento (Accesible en la etapa MOUNT) V$THREAD V$CONTROLFILE V$DATABSE V$DATAFILE V$DATAFILE_HEADER V$LOGFILE Descripcion Contiene informacin ensartada, por ejemplo respecto de los grupo redo log. Lista los nombres de los ficheros de control (incluso aunque no disponibles, esta vista no devuelve filas en la etapa NOMOUNT). Contiene informacin de la BD. Contiene informacin del fichero de datos desde el fichero de control. Muestra la informacin de la cabecera del fichero de datos desde el fichero de control. Contiene informacin relativa a los ficheros redo log activos.

Visualizacin De Los Valores Actuales De Los Parametros


Utilice el comando Server Manager. SHOW PARAMETER control

Consulte la vista dinmica de rendimiento V$PARAMETER: SELECT name FROM V$PARAMETER WHERE name LIKE %control%;

Visualizacin De Los Valores De La Instance


V$INSTANCE - INSTANCE_NUMBER - INSTANCE_NAME - HOST_NAME - VERSION - STARTUP_TIME - STATUS - DATABASE_STATUS - INSTANCE_ROLE =1 = OCHOI = PROVES1.PLAZASITE.COM = 8.1.6.1.0 = 12/01/01 = OPEN = ACTIVE = PRIMARY_INSTANCE

Parmetros para los Ficheros de Traza


Los ficheros de traza pueden ser escritos por el servidor y por los procesos background . Oracle almacena informacin de errores en los ficheros de traza. Este proceso puede ser habilitado o inhabilitado por: Comando ALTER SESSION Parmetro SQL_TRACE (ALTER SESSION SET sql_trace=TRUE) Parmetros BACKGROUND_DUMP_DEST USER_DUMP_DEST MAX_DUMP_FILE_SIZE Localizacin de los ficheros de traza y ALERT Donde sern creados los ficheros de traza cuando lo soliciten los usuarios. Espefica en bloques del SO, el lmite del tamao de los ficheros de traza.

Parmetros de Inicializacin Dinmica


ALTER SESSION ALTER SYSTEM ALTER SYSTEM DEFERRED V$PARAMETERS ISSES_MODIFIABLE ISSYS_MODIFIABLE modificable con alter session modificable con alter system

(para sesiones futuras)

Administracin de Bases de Datos

32

Captulo N 4
CREACIN DE UNA BASE DE DATOS
La creacin de una BD es una tarea que prepara varios ficheros del sistema operativo y es necesario solo una vez, sin importar en nmero de ficheros de datos que tenga la BD. Este es un aspecto importante que el administrador de la BD tiene que decidir sus caractersticas, tales como el tamao del bloque de la BD y el juego de caracteres, que no puede ser cambiado despus de la creacin. Dependiendo del sistema operativo, una BD puede haber sido creada automticamente como parte de la instalacin. Se puede utilizar esta BD inicial o se la puede borrar y crear una nueva manualmente. Durante la migracin desde una versin anterior de Oracle, es necesaria la creacin de una nueva BD solo si se necesita toda ella. Es decir, Ud. Puede utilizar la utilidad migracinpor ejemplo, MIG80 en NTpara migrar desde una versin anterior de la BD. Se puede crear una BD con nuevos ficheros de datos o eliminando informacin de una BD existente que tiene la misma estructura fsica. El comando CREATE DATABASE inicia la creacin de los ficheros de control, ficheros redo log, y la estructura del diccionario de datos que necesita el servidor Oracle para acceder a la BD.

Preparacin Del Sistema Operativo Y Requisitos Previos Para La Creacin


Cuenta privilegiada autentificada de una de las siguientes maneras: o Por el sistema operativo o Utilizando un fichero de password Memoria para iniciar instance. Espacio en disco para la BD planeada.

Planificacin De La Localizacin De Los Ficheros De La Base De Datos


Mantener al menos dos copias activas del fichero de control de la BD, en al menos dos dispositivos diferentes. Multiplexar los ficheros redo log y poner los miembros del grupo en discos diferentes. Separar los ficheros de datos, cuyos datos: - Vayan a entrar en conflicto de recursos, a travs de diferentes recursos fsicos del disco. - Tengan diferentes periodos de vida. - Tengan diferentes caractersticas administrativas.

Ficheros de Control Para seguridad debera crear al menos dos ficheros de control en dos discos diferentes. Ya que las copias del fichero de control tiene que estar siempre situadas en discos diferentes, pueden tener nombres idnticos, tales como control01.ctl en UNIX y control.ora en NT. Ficheros Redo Log Activos Deberan constar de grupos multiplexados de ficheros redo log activos. Un grupo de fichero consta de copias idnticas, que deberan estar en localizadas en discos diferentes. Ficheros de datos Nombrar los ficheros de datos relacionando su contenido, como el nombre de la raz, por ejemplo, tales como system01.dbf, temp01.dbf, user01.dbf en UNIX y system01.ora, temp01.ora en NT. Considerar las caractersticas de los datos que vayan a ser almacenados antes de determinar la estructura apropiada para su base de datos, para: Minimizar la fragmentacin. Minimizar los conflictos en el disco. Separar objetos. Para minimizar la fragmentacin de la BD, debera separar los objetos de la misma atendiendo a la duracin del tiempo en uso, tales como datos de aplicacin y datos temporales, en diferentes tablespaces. Para asegurar las cargas I/O bien equilibradas, debera separar los objetos con I/O competentes necesarios, tales como tablas e ndices en diferentes tablespaces.

Administracin de Bases de Datos

33
Estrucura Del Software Del Directorio Oracle
Despus de la instalacin de Oracle, el directorio ORACLE_HOME es /pnto_montaje/app/oracle/product. En UNIX, el directorio ORACLE_HOME tiene los siguientes subdirectorios, as como los subdirectorios para cada producto Oracle, dependiendo de los productos disponibles en la plataforma:

Subdirectorios Bin Dbs Lib Orainst Rdbms Plsql Network Svmgr

Descripcin Ejecutables para todos los productos Los ficheros de B.D. INIT<sid>.ora y sql.bsq Bibliotecas el producto oracle Instalacin de ficheros y programas Ficheros del servidor, comandos y bibliotecas necesarias para las B.D. Opcin procedural PL/SQL SQL*PLUS Server Manager

Algunos ejemplos del contenido de los subdirectorios del producto son: Subdirectorios Admin. Demo Doc Install Lib Log Descripcin Ficheros de comandos administrativos Ficheros de demostracin Ficheros README Ficheros de comandos de instalacin del producto Bibliotecas del producto Ficheros log

La estructura del directorio en NT es similar a la de UNIX.

Consideraciones Para La Creacin De Una Base De Datos


EN UNIX: Crearla automticamente durante una instalacin. Crearla manualmente despus de la instalacin. EN NT: Crearla utilizando el asistente de la Base de Datos. Crearla manualmente.

Si utiliza el instalador para crear una base de datos, el instalador le solicita que introduzca el nmero y posicin de los puntos de montaje, el grupo de caracteres y el grupo de caracteres nacional, claves para usuario SYS y SYSTEM y el grupo UNIX de claves para habilitar las autentificaciones del sistema operativo. En NT durante la instalacin le solicitan crear una BD con un wizard, el Asistente de la BD Oracle. Esta utilidad puede utilizarse tambien despus de la instalacion para crear o borrar una BD.

Crear Una Base De Datos Manualmente


1. 2. 3. 4. 5. 6. 7. Decidir el nombre de la misma y el juego de caracteres. Definir las variables del sistema operativo. Preparar el fichero de parmetros. Crear un fichero de passwords. Arrancar instance. Crear la base de datos. Ejecutar los ficheros de comandos para generar el diccionario de datos y cumplir con pasos de la postcreacin.

Entorno Del Sistema Operativo


En UNIX definir la siguientes variables del entorno: ORACLE_HOME ORACLE_SID ORACLE_BASE ORA_NLS33 PATH Decidir el nombre nico para el instance y definir las siguientes variables del entorno:

Administracin de Bases de Datos

34
Variable ORACLE_HOME ORACLE_SID ORACLE_BASE ORA_NLS33 PATH Descripcin Directorio donde ser instalado el software Oracle (ejemplo /u01/app/oracle/product/8.03) Especifica el nombre del instance y tiene que ser nico para los instance Oracle que se ejecuten en la misma mquina. No necesario, pero recomendado como parte de una instalacin permisiva OFA (ejemplo /u01/app/oracle) Necesario cuando se crea una BD con un juego de caracteres distinto del US7ASCII (ejemplo: $ORACLE_HOME/ocommon/nls/admin./data) Tiene que incluir $ORACLE_HOME/bin

Entorno Del Sistema Operativo En NT

Definir la variable ORACLE_SID para utilizar SVRMGR30. Crear los archivos de servicios y password con ORADIM80. C:\> ORADIM80 NEW SID u16 - INTPWD password STARTMODE auto - PFILE ORACLE_HOME\DATABASE\initU16.ora

Oracle en NT, utiliza variables en el registro NT similares a la manera en que Oracle en UNIX usa la estructura de variables de entorno. El instalador Oracle, el ORADIM80 y el Asistente de la Base de Datos Oracle define variables en el registro como la grabacin Oracle del instance Oracle como un servicio. Ud. puede editar el registro manualmente, a travs de la utilidad regedit.exe. Por ejemplo los parmetros como ORACLE_HOME, ORA_NLS33 y ORACLE_SID (el por defecto es ORCL para el iniciador de la base de datos), son almacenados en el flder HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE. De esta forma la creacin de una nueva BD necesita que se defina ORACLE_SID con el siguiente comando: C:\> set ORACLE_SID=U16 Useted puede crear ahora un servicio nuevo y el nuevo fichero de password, si es necesario, para ejecutar la base de datos con la utilidad ORADIM80: C:\> ORADIM80 NEW SID sid [INTRO internal_pwd] [SRVC srvcname] [MAXUSERS number] [STARMODE auto, manual] [-PFILE filename] El servidor oracle graba todas las operaciones ORACLE_HOME\RDBMS80\ORADIM80.LOG. que son ejecutadas con la utilidad ORADIM80 en el fichero

Preparacin Del Fichero De Parmetros


1. 2. Crear el nuevo init<SID>.ora $cp init.ora $ORACLE_HOME/dbs/initu16.ora Modificar initU16.ora editando los parmetros.

Cuando se prepara la nueva BD, copiar el fichero por defecto init.ora con el nuevo nombre init<SID>.ora. Cambiar los valores para algunos parmetros, otros pueden ser dejados por defecto. Especificar al menos los siguientes parmetros antes de iniciar el instance. Parmetro DB_NAME Descripcin El identificador de la BD de 8 caracteres o menor. Este el nico parmetro que es necesario cuando se crea una BD nueva. Este parmetro no necesita corresponder al ORACLE_SID, pero tiene que corresponder al nombre utilizado en la sentencia CREATEDATABASE. CONTROL_FILES Especifica la lista de los ficheros de control (Siempre especifica al menos dos nombre de ficheros de control, situados en discos separados si es posible. Los ficheros de control no necesitan existir en este momento. El servidor Oracle puede crear unos nuevos ficheros del sistema operativo cuando crea la BD.) DB_BLOCK_SIZE Determina el tamao del bloque de la BD (El tamao del bloque no puede ser cambiado despus de la creacin de la BD.

NOTA: el nombre de la BD es asociado con una BD en el momento de su creacin y es almacenado en los ficheros de control. Para cambiar el nombre de la BD, utilizar el comando CREATE CONTROLFILE para volver a crear el fichero de control.

Administracin de Bases de Datos

35
Arranque Del Instance
1. 2. Conectar como SYSDBA. Arrancar el instance en la etapa NOMOUNT. SVRMGR>STARTUP NOMOUNT \ 2>PFILE=initU16.ora ORACLE instance started

Conectar como SYSDBA utilizando la autentificacin del sistema operativo o el mtodo fichero de passwords y arrancar el instance utilizando el comando STARTUP. L clave es la que fue utilizada previamente para crear el servicio con la utilidad ORDIM80 en NT o lo que se cre previamente usando la utilidad orapwd en UNIX. Si el fichero de parmetro no esta en la posicin por defecto. Puede necesitar especificar la clusula PFILE en el comando STARTUP. Para este curso el fichero de parmetros esta localizado en el directorio actual.

Creacin De La Base De Datos


Para crear una base de datos utilice el siguiente comando SQL: CREATE DATABASE [database] [CONTROLFILE REUSE] [LOGFILE (GROUP integer) filespec [, (GROUP integer) filespec]] [MAXLOGFILES integer] [MAXLOGMEMBERS integer] [MAXLOGHISTORY integer] [MAXDATAFILES integer] [MAXINSTANCES integer] [ARCHIVELOG | NOARCHIVELOG] [CHARACTER SET charset] [NATIONAL CHARACTER SET charset] [DATAFILE filespec [autoextend_clause] [, filespec [autoextend_clause]] filespec:== filename [SIZE integer] [K | M] [REUSE] autoextend_clause :== [AUTOEXTEND {OFF | ON [NEXT integer [KIM] [MAXSIZE {UNLIMITED | integer [K | M] } ] } ]

database CONTROLFILE REUSE LOGFILE GROUP MAXLOGOFILES MAXLOGMENBERS MAXLOGHISTORY DATAFILE filespec AUTOEXTEND MAXDATAFILES MAXINSTANCES ARCHIVELOG NOARCHIVELOG CARCTER SET NATIONAL CARCTER SET

Nombre de la BD que se va a crear. Si se omite es utilizado el parmetro de inicializacin DB_NAME Especifica que un fichero de control existente identificado en el fichero de parmetro debera ser utilizado nuevamente. Especifica los nombres de los ficheros log que van a ser utilizados y el grupo al que pertenecen. Es el nmero mximo de los grupos del fichero log que puedan ser creados en la BD. Es el nmero mximo de miembros de ficheros log para un grupo de ficheros log. Es el nmero mximo de redo logs archivados por el medio automtico de recuperacin del Servidor Paralelo Oracle. Especifica los ficheros de datos que van a ser utilizados. Habilita o inhabilita la extensin automtica del fichero de datos. Es el nmero mximo de ficheros de datos que pueden ser creados por la base de datos. Es el nmero mximo de instances que pueden simultneamente montar y abrir la BD. Establece que los redo logs tienen que ser archivados antes de que se puedan volver a utilizar. Establece que los redo logs pueden ser vueltos a utilizar sin archivar sus contenidos. Es el grupo de caracteres que utiliza la BD para almacenar datos. Especifica el grupo nacional de caracteres utilizado para almacenar datos en columnas definidas como NCHAR, NCLOB, o NVARCHAR2.

Si es epecificado REUSE en un fichero de especificacin, tiene que existir el fichero; de otra forma la opcion TAMAO tiene que ser especificada y el fichero no tiene que existir.

Administracin de Bases de Datos

36

Asistente De La Base De Datos Oracle Para iniciar el Asistente de la BD Oracle: 1. Elija INICIO-> PROGRAMAS->ORACLE WINDOWS NT->ASISTENTE Esta utilidad es el mtodo mas sencillo para crear una BD Oracle 2. 3.

DE

BASE

DE

DATOS

ORACLE.

Proceda hasta la ltima pantalla del Asistente de la Base de Datos y termine la creacin. El Asistente de la BD inicia los servicios relacionados, edita los ficheros init.ora y crea una BD o borra la BD y servicios. Puede crear la BD o almacenar los pasos de la creacin en el siguiente grupo de ficheros de comandos: Contenido de sqlu16.bat: C:\ORANT\bin\oradim80 new sid U16 intpwd oracle startmode auto pfile C:\ORANT\database\initu16.ora C:\ORANT\bin\oradim80 startup sid U16 starttype srvc.inst usrpwd oracle pfile C:\ORANT\database\initU16.ora C:\ORANT\bin\svrmgr30 @U16run.sql

Donde: el fichero de comandos u16run.sql tiene: Spool C:\ORANT\database\spoolmain Set echo on Connect INTERNAL/oracle Startup nomount pfile=C:\ORANT\database\initU16.ora CREATE DATABASE U16 LOGFILE C:\ORANT\database\logU16.ora SIZE 1024K MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOHISTORY 1 DATAFILE C:\ORANT\database\Sys1U16.ora SIZE 50M MAXDATAFILES 100 MAXINSTANCES 1 CHARACTER SET WE8ISO8859P1; Spool off

y el initU16.ora tiene: Db_name = U16 Db_files = 1020 Control_files = (C:\ORANT\database\ctlU16.ora, C:\ ORANT\database\ctl2U16.ora) db_file_multiblock_read_count = 16 db_block_buffers = 2000 shared_pool_size = 30000000 log_checkpoint_interval = 8000 processes = 100 dml_locks = 200 log_buffer = 65536 sequence_cache_entries = 30 sequence_cache_hash_buckets = 23 #audit_trail = true #timed_statistics = true background_dunp_dest = C:\ORANT\rdbms\trace user_dump_dest = C:\ORANT\rdbms80\trace db_block_size = 8192 compatible = 8.0.4.0.0 sort_area_size = 65536 log_checkpoint_timeout=0 remote_login_passwordfile = shared max_dump_file_size = 10240

Solucion De Problemas La creacin de la BD falla si: Hay errores de sintaxis en el fichero de comandos SQL. Ya existen los ficheros que deberan ser creados. Errores en el sistema operativo, como permiso de ficheros o directorios, o suceden errores de espacio insuficiente. Si ocurren estos errores la sentencia CREATE DATABASE falla. En cada caso debera salir de la BD, eliminar cualquier fichero creado por la definicin CRETE DATABASE, corregir los errores e intentar la creacin de nuevo.

Administracin de Bases de Datos

37
Despues De La Creacin De La Base De Datos
La base de datos contiene: Ficheros de datos que forman el tablespace SYSTEM. Ficheros de control y redo log. Usuario SYS/change_on_install Usuario SYSTEM/manager Segmento de Rollback SYSTEM Tablas internas (aunque no vistas del diccionario de datos) Despus de la creacin de la BD, se abre el fichero SQL de comandos sql.bsq se ejecuta satisfactoriamente y se crean los objetos de la BD nombrados.

Ejemplo de Scripts para Creacin de una Base de Datos


1. Script crdbDBC3T.sql spool /opt/oracle/app/oracle/product/8.1.7/dbs/crear/crdbDBC3T.log connect internal startup nomount pfile=/opt/oracle/app/oracle/product/8.1.7/dbs/initDBC3T.ora create database "DBC3T" maxinstances 8 maxlogfiles 100 maxdatafiles 250 character set "WE8ISO8859P15" datafile '/DBC3T/DAT01/sysDBC3T.dbf' size 125M logfile GROUP 1 ( '/DBC3T/ROL/log1DBC3T_01.log', '/DBC3T/ROL/log1DBC3T_02.log' ) SIZE 16M, GROUP 2 ( '/DBC3T/ROL/log2DBC3T_01.log', '/DBC3T/ROL/log2DBC3T_02.log' ) SIZE 16M; disconnect spool off

2. Script crdb2DBC3T.sql spool /opt/oracle/app/oracle/product/8.1.7/dbs/crear/crdb2DBC3T.log connect internal @/opt/oracle/app/oracle/product/8.1.7/rdbms/admin/catalog.sql connect internal create rollback segment r0 tablespace system storage (initial 2M next 2M minextents 2 maxextents 3000); REM * Use ALTER ROLLBACK SEGMENT ONLINE to put r0 online without shutting REM * down and restarting the database. REM * alter ROLlback segment r0 online; REM * Create a tablespace for ROLlback segments. REM * ROLlback segment configuration guidelines: REM * 1 ROLlback segments for every 4 concurrent xactions. REM * No more than 50 ROLlback segments.

Administracin de Bases de Datos

38
REM * All ROLlback segments the same size. REM * Between 2 and 4 homogeneously-sized extents per ROLlback segment. REM * Attempt to keep ROLlback segments to 4 extents.

REM * Recomendacin de Siebel de tamaos de tablespaces de ROLlback create tablespace TS_ROLLBACK01 datafile '/DBC3T/ROL/TsROLlback0101.dbf' size 80M default storage ( initial 2M next 2M pctincrease 0 minextents 5 );

REM * Create a tablespace for temporary segments. REM * Temporary tablespace configuration guidelines: REM * Initial and next extent sizes = k * SORT_AREA_SIZE, k in {1,2,3,...}. REM * create tablespace TS_TEMP datafile '/DBC3T/TMP/tempDBC3T.dbf' size 150M default storage ( initial 2048k next 4096k pctincrease 0 ) ONLINE TEMPORARY;

REM * Create a tablespace for database tools. REM * create tablespace tools datafile '/DBC3T/DAT01/toolDBC3T.dbf' size 50M; REM* Create a tablespace for miscellaneous database user activity. REM *

create tablespace users datafile '/DBC3T/DAT01/usrDBC3T.dbf' size 10M; REM * Create ROLlback segments. REM * create 3000); create 3000); create 3000); create 3000); create 3000); create 3000); ROLlback segment r01 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents ROLlback segment r02 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents ROLlback segment r03 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents ROLlback segment r04 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents ROLlback segment r05 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents ROLlback segment r06 tablespace TS_ROLLBACK01 STORAGE ( initial 2M next 2M optimal 10M minextents 5 maxextents

REM * Use ALTER ROLLBACK SEGMENT ONLINE to put ROLlback segments online REM * without shutting down and restarting the database. Only put one REM * of the ROLlback segments online at this time so that it will always REM * be the one used. When the user shuts down the database and starts REM * it up with initSID.ora, all four will be brought online. REM * alter ROLlback segment r01 online; alter ROLlback segment r02 online; alter ROLlback segment r03 online; alter ROLlback segment r04 online; alter ROLlback segment r05 online; alter ROLlback segment r06 online;

Administracin de Bases de Datos

39

REM * Since we've created and brought online 2 more ROLlback segments, REM * we no longer need the second ROLlback segment in the SYSTEM tablespace. alter ROLlback segment r0 offline; drop ROLlback segment r0; REM * Alter SYS and SYSTEM users. REM * alter user sys temporary tablespace TS_TEMP; #revoke resource from system; #revoke resource on system from system; #grant resource on tools to system; alter user system default tablespace tools temporary tablespace TS_TEMP; REM * For each DBA user, run DBA synonyms SQL script. Don't forget that EACH REM * DBA USER created in the future needs dba_syn.sql run from its account. REM * connect system/manager @/opt/oracle/app/oracle/product/8.1.7/rdbms/admin/catdbsyn.sql spool off

3. Script crdb3DBC3T.sql

spool /opt/oracle/app/oracle/product/8.1.7/dbs/crear/crdb4DBC3T.log connect internal @/opt/oracle/app/oracle/product/8.1.7/rdbms/admin/catproc.sql @/opt/oracle/app/oracle/product/8.1.7/rdbms/admin/utlxplan.sql spool off

Administracin de Bases de Datos

40

Captulo N 5
CREACIN DE LAS VISTAS DEL DICCIONARIO DE DATOS
Estructura Del Diccionario De Datos Uso Del Diccionario De Datos.
El diccionario de datos suministra informacin a cerca de: Estructura lgica y fsica de la BD. Nombres, definiciones y situacin de los esquemas de objetos. Restricciones de integridad. Usuarios de la BD y privilegios. Auditoria. El diccionario de datos es una parte importante de la BD Oracle. Es un grupo de tablas y vistas que son utilizados como una referencia para proporcionar informacin de la base de datos asociada. Las tablas del diccionario de datos se crean por el fichero de comandos sql.bsq mientras se crea la BD. El diccionario de datos se actualiza por el Servidor Oracle, siempre que un comando DDL es ejecutado. Tambin los comandos DML, tales como los que son una tabla para expandir, pueden actualizarlo.

Tablas Base Y Vistas Del Diccionario De Datos


El diccionario de datos localizado en el tablespace SYSTEM y del que es propietario del usuario SYS, contiene dos partes: Tablas Base Vistas del diccionario de datos. Tabla Base La fundacin del diccionario de datos es un grupo de tablas base o subyacentes. El servidor Oracle escribe y lee estas tablas. Los usuarios de la BD acceden raramente a ellas, dado que estn normalizadas y la informacin est codificada. Nunca utilice comandos DML tales como INSERT, UPDATE y DELETE para actualizar las tablas del diccionario de la BD directamente, con la excepcin de la tabla AUD$. Vistas del diccionario de datos Las vista del diccionario de datos se crean al ejecutar el fichero de comandos catalog.sql. Estas vistas decodifican y resumen la informacin e las tablas de la BD. Se crean sinnimos pblicos para las vistas de la BD de forma que los usuarios puedan acceder a ellas fcilmente.

Vistas Del Diccionario De Datos

Categoras de las Vistas del diccionario de datos Las vistas del diccionario de datos son separadas en tres categoras. En muchos casos las vistas contiene informacin similar y pueden ser distinguidas desde cada una de ellas por sus prefijos.

Administracin de Bases de Datos

41
El Prefijo USER Estas vistas son accesibles por cualquier usuario y se refieren generalmente a los objetos de cada uno de ellos por ejemplo. USER_TABLES contiene informacin de todas las tablas posedas por el usuario. Estas vistas devuelven un subconjunto de la informacin en las vistas ALL_xxx.

El Prefijo ALL Las vistas con el prefijo ALL son accesibles por cualquier usuario y normalmente incluyen la columna OWNER. Estas devuelven informacin acerca de objetos a los que el usuario tiene acceso por va pblica o garanta de privilegios y roles, incluyendo los objetos que el usuario posee. El Prefijo DBA Las vistas con el prefijo DBA dan informacin de todos los objetos en la BD y normalmente incluye la columna OWNER. Estas son consultadas por el administrador de la BD o cualquier usuario con el privilegio del sistema SELECT ANY TABLE. Se crean sinnimos para estas vistas de forma que cada usuario con el privilegio SELECT ANY TABLE pueda consultarlas.

Diccionario de datos: Ejemplos de Vistas y Categoras. Vistas dictionary dict_columns dba_tables dba_objects dba_lobs dba_tab_columns dba_constraints dba_users dba_sys_privs dba_roles Descripcin Descripcin general Informacin relacionada con los objetos del usuario como tablas, restricciones, objetos grandes y columnas.

Informacin relacionada con los privilegios y roles.

Vistas del Diccionario de datos: Ejemplos de Vistas y Categoras. Vistas dba_extents dba_free_space dba_segments dba_rollback_segs dba_data_files dba_tablespaces dba_audit_trail dba_audit_objects dba_audit_obj_opts Descripcin Asignacin de espacio a los objetos en la BD.

Estructuras generales de la BD.

Auditoria de la informacin.

Ejemplo: SVRMGR> SELECT * FROM dicctionary WHERE table_name LIKE %TABLE%; SVRMGR> SELECT column_name, comments FROM dict_columns WHERE table_name = `DBA_TABLES;

Administracin de Bases de Datos

42
Construccion Del Diccionario De Datos
Creacin de las Vistas del Diccionario de Datos F. Comandos catalog.sql catproc.sql Propsito Crea vistas del diccionario de datos utilizadas corrientemente. Ejecuta todos los ficheros de comandos necesarios para PL/SQL en el servidor

Despus de la creacin de una BD los ficheros de comandos catalog.sql y catproc.sql tienen que ser ejecutados como el usuario SYS. Estn localizados en el directorio $ORACLE_HOME/rdbms/admin en UNIX y en el directorio %ORACLE_HOME%/rdbms80/admin en NT.

El fichero de comandos catalog.sql


Este fichero crea las vistas de las tablas base, vistas dinmicas de rendimiento y sus sinnimos. Arranca los ficheros de comandos tales como los que crean vistas y objetos para la utilidad Server Manager, para auditar, para la utilidad Export e Import y para las opciones de particionamiento y objeto. Ejecuta el fichero de comandos standart.sql, que crea el entorno bsico PL/SQL. El fichero de comandos standart.sql declara tipos, excepciones y subprogramas, que estn disponibles automticamente para cada programa PL/SQL. Por ejemplo declara la funcin construir-dentro llamada BITAND, que devuelve el resultado de la operacin bit y e sus argumentos. Function BITAND (LEFT binary_integer, RIGTH binary_integer=Return binary_integer

El fichero de commandos catproc.sql


Este fichero establece el uso de la funcionalidad PL/SQL. Adems, crea varios paquetes PL/SQL que son utilizados para extender la funcionalidad de RDBMS. El fichero de comandos catproc.sql tambin crea vistas adicionales para la opcin encolamiento avanzado, recuperacin del tablespace point-in-time y el uso de LOB.

Administracin de Bases de Datos

43

Captulo N 6
MANTENIMIENTO DE FICHEROS DE CONTROL

Uso Del Fichero De Control

Fichero de Control

Fichero de Datos

Fichero de Redo Log

BASE DE DATOS

El fichero de control es un fichero binario que es necesario para arrancar y operar de forma satisfactoria con la BD. Cada vez que un instance monta una BD Oracle, lee el fichero de control para localizar los ficheros de datos y los redo logs activos.

El fichero de control es actualizado constantemente durante el uso de la BD y tiene que estar disponible siempre que la BD sea montada o abierta. El fichero de control proporciona informacin a cerca de la consistencia de la BD utilizada durante la recuperacin. Si cualquiera de los ficheros de control utilizados actualmente por la BD no est disponible, la BD no puede funcionar debidamente.

Contenido Del Fichero De Control

Nombre de la base de datos Localizacin del fichero Bloque Datos Localizacin Archivo redo log Nombres de Tablespaces Nmero de la secuencia log actual Informacin del ltimo checkpoint Log histrico Informacin de las copias de seguridad

Parmetros Que Afectan Al Fichero De Control


El tamao del fichero de control est influenciado por los siguientes parmetros: MAXLOGFILES MAXLOGMEMBERS MAXLOGHISTORY MAXDATAFILES MAXINSTANCES

Administracin de Bases de Datos

44
Obtencion De Informacion Relativa Al Fichero De Control
V$CONTROLFILE - NAME V$PARAMETER - NAME (control_file) - VALUE V$CONTROLFILE_RECORD_SECTION - TYPE - RECORDS_SIZE - RECORDS_TOTAL - RECORD_USED

Multiplexacion Del Fichero De Control


Control files=(/DISK1/control01.com,DISK2/control02.com)

Disco 1
control01.con

Disco 2
control02.con

se puede crear la BD con mltiples ficheros de control especificando hasta ocho nombres de fichero de control totalmente calificados, utilizando el parmetro de inicializacin CONTROL_FILES. El servidor Oracle crea y mantiene todos los ficheros relacionados cuando se crea la BD. Oracle recomienda al menos dos ficheros de control idnticos almacenados en discos diferentes. Si un fichero de control se pierde utilice la copia para reiniciar el instance.

Administracin de Bases de Datos

45

Captulo N 7
MANEJO DE TABLESPACES Y FICHEROS DE DATOS
VISTA GENERAL

La arquitectura de la BD incluye las estructuras lgicas y fsicas que forman la BD. La estructura fsica consta de ficheros de control, ficheros de redo log activos y ficheros de datos. La estructura lgica de la BD incluye los tablespaces, segmentos, extensiones y bloques de datos. La separacin de la estructura lgica y fsica proporciona un buen control del manejo del espacio en disco. Cuando las estructuras de almacenamiento lgico se crean, el espacio es escaneado en la BD de acuerdo con los parmetros predefinidos. El administrador de la BD tiene la potestad de definir o configurar estos parmetros. Para utilizar el espacio eficiente y efectivamente, es importante comprender la estructura lgica de la BD.

Estructura Lgica De La Base De Datos

Relaciones entre la BD, Tablespaces y Ficheros de Datos


Una BD Oracle puede ser dividida en reas lgicas ms pequeas de almacenamiento conocidas como tablespaces. Tablespaces Un tablespace puede pertenecer solo a una BD. Cada tablespace consta de uno o ms ficheros del sistema operativo (datafiles .dbf). Los tablespaces pueden ser puestos on line mientras la BD est en funcionamiento. Excepto los tablespaces del SYSTEM o los que tienen un segmento rollback activo, el tablespace puede ser puesto en offline, dejando la BD funcionando. Los tablespaces pueden cambiar de modo solo lectura a lectura-escritura.

Administracin de Bases de Datos

46

Usos del Tablespace Controlan la localizacin del espacio y asignan las cuotas a los usuarios. Controlan la disponibilidad de datos, pueden ponerse de forma on-line u off-line de forma individual. Distribuyen el almacenamiento de datos entre los dispositivos para mejorar el rendimiento I/O y reducir la contencin I/O contra un nico disco. Realizan operaciones de backup y recuperacin parciales. Guardan grandes cantidades de datos estticos en los dispositivos de solo-lectura. Ficheros de Datos Cada tablespace en una BD Oracle consta de uno o ms ficheros llamados ficheros de datos. Estos son estructuras fsicas que se conforman con el sistema operativo en el que el servidor Oracle est ejecutado. Un fichero de datos puede pertenecer solo a un tablespace. El servidor Oracle crea un fichero de datos para un tablespace dndole la cantidad de espacio especificada ms una pequea cabecera. El administrador de la BD puede cambiar el tamao del fichero de datos despus de su creacin o puede especificar que un fichero de datos debera crecer dinmicamente como lo hacen los objetos en el tablespace. Esta funcionalidad implica que la BD puede constar de menos ficheros de datos por tablespace y el administrador de la BD puede evitar la limitacin MAXDATAFILES.

Relaciones entre Segmentos, Extensiones y Bloques de Datos


Oracle habilita mayor modularidad en el control del espacio en disco a travs de las estructuras lgicas de almacenamiento, incluyendo segmentos, extensiones y bloques de datos. Segmentos Un segmento es un espacio reservado para un tipo especfico de estructura de almacenamiento lgico dentro de un tablespace. Los siguientes son los tipos de segmentos: (tablas, ndices, cluster, segmentos de rollback) Segmentos de Datos. Segmentos de ndice. Segmento Temporal. Segmento Rollback. Un segmento, tal que un segmento de datos puede abarcar mltiples ficheros que pertenezcan al mismo tablespace. Extensiones Al siguiente nivel de espacio lgico en la BD se le llama extensin. Una extensin es un grupo de bloques contiguos. Cada tipo de segmento est compuesto de una o ms extensiones. Una extensin puede no ocupar un fichero de datos, pero tiene que existir en uno. Bloque de Datos Al ms fino nivel de granularidad, los datos en una BD oralce son almacenados en bloques. Un bloque de datos corresponde a uno o ms bloques de fichero situados en un fichero de datos existente. El tamao del bloque de datos est especificado en cada BD Oracle en el parmetro de inicializacin DB_BLOCK_SIZE (ochoi 8192) cuando se crea la misma. Un bloque de BD es la unidad menor de entrada/salida.

Creacin De Tablespaces

Tablespaces SYSTEM y No-SYSTEM


El Tablespace SYSTEM consta de: - Informacin del diccionario de datos. - Segmento Rollback SYSTEM. El resto de los Tablespace constan de: - Segmentos Rollback. - Datos de Aplicacin. - ndices de Aplicacin.

Tipos de Tablespace Una BD consta de al menos de un tablespace: el del SYSTEM. Crear tablespaces adicionales para incrementar el control y el fcil mantenimiento a largo plazo en la BD. Esencialmente, el servidor Oracle percibe dos tipos de tablespaces: SYSTEM y el resto. 1. Tablespaces SYSTEM Necesario en todas las BD para que esta pueda operar. Contiene informacin del diccionario de datos, definiciones de procedimientos almacenados, paquetes y disparadores de BD. Contiene el segmento rollback SYSTEM. No debera contener datos del usuario aunque le sea permitido.

Administracin de Bases de Datos

47

2. Tablespaces Non-SYSTEM Facilitan ms flexibilidad en la administracin de la BD. Pueden almacenar segmentos rollback, segmentos temporales, datos de aplicacin e ndices de aplicacin. Ejemplo: CREATE TABLESPACE app_data DATAFILE /DISK4/app01.dbf SIZE 100M, /DISK5/app02.dbf SIZE 100M MINIMUN EXTENT 500K DEFAULT STORAGE (INITIAL 500K NEXT 500K MAXEXTENTS 500 PCTINCREASE 0);

Sintaxis: CREATE TABLESPACE tablespace DATAFILE filespec [autoextent_clause] [,filespec [autoextent_clause] ] [MINIMUN EXTENT integer [K | M]] [DEFAULT starage_clause] [PERMANENT | TEMPORARY] [ONLINE | OFFLINE] STORAGE ( [INITIAL integer [K | M ] ] [ NEXT integer [K | M ] ] [ MAXEXTENTS {integer | UNLIMITED} [ PCTINCREASE integer ] ) Donde: tablespace es el nombre del tablespace que se va a crear. DATAFILE especfica el fichero de datos o ficheros que forman el tablespace. DEFAULT STORAGE especfica los parmetros por defecto de todos los objetos creados en el tablespace. MINIMUM EXTENT asegura que todos los tamaos de las extensiones utilizadas en el tablespace son mltiplos el valor integrado. ONLINE hace que el tablespace est disponible para ser utilizado inmediatamente despus de la creacin. OFFLINE hace que el tablespace no est disponible para ser utilizado inmediatamente despus de la creacin. PERMANENT especfica que el tablespace puede ser utilizado para guardar objetos permanentes. TEMPORARY especfica que el tablespace ser solo utilizado para mantener objetos temporales: por ejemplo segmentos utilizados por clasificaciones implcitas para manejar la clusula ORDER BY. OEM 1. 2. 3. 4. 5. 6. Usar el Storage Manager. Seleccionar Tablespace->Crear. En la pgina General de la hoja de propiedad, introducir el nombre y elegir el campo ADD para que aparezca la hoja de propiedad Crear Datafile. En la hoja de propiedad Crear Datafile, especificar cada fichero de datos. En la pgina Extensiones de la hoja de propiedad, introducir la informacin de almacenamiento. Hacer clic en Crear. El tamao de las extensiones deben ser mltiplo de multiblock read size multiblock read size = block size * multiblock read count

Ejemplos en OCHOI TABLESPACE INITIAL EXTENT NEXT EXTENT MIN EXTENT MAX EXTENT PCT INCREASE MIN EXTLEN = users = 131072 = 131072 =1 = 4096 =0 = 131072 DATAFILE = users01.dbf y users02.dbf

CREATE TABLESPACE vending DATAFILE /oracle/mount3/oradata/ochoi/datafiles/vending01.dbf SIZE 200M MINIMUM EXTENT 500K DEFAULT STORAGE (INITIAL 500K NEXT 500K MAXEXTENTS 1200 PCTINCREASE 0); initial_extent 516096 next_extent 516096 min_extents 1 max_extents 1200 pctincrease 0 min_extlen 516096

Administracin de Bases de Datos

48

Lmites El nmero mximo de tablespaces por BD es de 64K. Pero el nmero de tablespaces no puede exceder el nmero de fichero de datos. El nmero mximo de ficheros de datos por tablespaces es 1023.

Parmetros De Almacenamiento
Los parmetros siguientes influyen en la asignacin del almacenamiento de los segmentos. INITIAL NEXT MAXEXTENTS MINEXTENTS PCTINCREASE La cantidad de espacio utilizado por un segmento est determinada por la clusula de almacenamiento. Estos parmetros se determinan en la creacin del segmento. Si no se dan parmetros de almacenamiento especficos en los comandos CREATE de los segmentos- tales como CREATE TABLE, CREATE INDEX, CREATE CLUSTER o CREATE ROLLBACK SEGMENT- el segmento utilizar los parmetros de almacenamiento por defecto para el tablespace en el que est almacenado. INITIAL define el tamao de la primera extensin. El tamao mnimo de la primera extensin es dos bloques, esto es (2*DB_BLOCK_SIZE). El tamao por defecto es de 5 bloques, esto es (5*DB_BLOCK_SIZE). NEXT se refiere al tamao de la segunda extensin. El tamao mnimo de la siguiente extensin es un bloque. El tamao por defecto es de 5 bloques, esto es (5*DB_BLOCK_SIZE). MINEXTENTS es el nmero de extensiones asignadas cuando el segmento es creado. El mnimo y por defecto es 1. PCTINCREASE es el porcentaje por el que crece el tamao de la extensin. El tamao de una extensin se calcula utilizando la siguiente formula:

Donde: Size n es el tamao de la extensin n-sima.

Por ejemplo si NEXT est seleccionado en 200K y PCTINCREASE es 50, la segunda extensin debera ser del tamao 200K, la tercera 300K (50% ms que la segunda), la cuarta 450K, y as sucesivamente. MAXEXTENTS determina el nmero mximo de extensiones que puede tener un segmento. El valor mnimo es 1. el valor mximo por defecto depende del tamao del bloque de datos. Tambin puede estar especificado en la clave UNLIMITED, que es equivalente a un valor de 2147483645. Si MINIMUN EXTENT es especificado para el tablespace, las extensiones situadas para un segmento en este tablespace son mltiplos de este valor.

Tablespaces Temporales
Utilizado para operaciones de ordenacin. No puede contener ningn objetos permanente.

CREATE TABLESPACE sort DATAFILE /DISK2/sort011.dbf SIZE 50M, MINIMUN EXTENT 1M DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 500 PCTINCREASE 0) TEMPORARY;

initial_extent next_extent 2097152 2097152

min_extents 1

max_extents 4096

pctincrease 0

min_extlen

Administracin de Bases de Datos

49

El administrador de la BD tiene la opcin de crear un tablespace temporal. Este puede ser utilizado solo para segmentos de clasificacin y no pueden contener ningn objeto permanente. Los tablespaces existentes pueden ser alterados de forma que puedan permanecer temporales siempre que no contengan objetos permanentes en ellos.

OEM 1. 2. 3. 4. 5. 6. Usar el Storage Manager. Seleccionar Tablespace->Crear. En la pgina General de la hoja de propiedad, introducir el nombre y elegir el campo ADD para que aparezca la hoja de propiedad Crear Datafile. En la hoja de propiedad Crear Datafile, especificar cada fichero de datos. Seleccionar el radio botn TEMPORARY. Hacer clic en Crear.

Cambio Del Tamao De Los Tablespaces


Aadir Ficheros de datos en un Tablespace Ejemplo ALTER TABLESPACE app_data ADD DATAFILE `/DISK5/app3.dbf SIZE 200M;

Tablespace APP_DATA

app01.dbf 1M

app02.dbf 1M

app03.dbf 2M

se puede agrandar un tablespace de dos formas: 1. Aadiendo un fichero de datos. 2. Cambiando el tamao del fichero de datos.

Para saber el espacio libre de un tablespace (datafiles) sumar el campo bytes de la tabla dba_free_space

Aadiendo Ficheros de Datos a un Tablespace Se puede aadir ficheros datos a un tablespace para incrementar la cantidad total de espacio en disco asignado para el tablespace con el comando ALTER TABLESPACE ADD DATAFILE: ALTER TABLESPACE tablespace ADD DATAFILE filespec [autoextend_clause] [, filespec [autoextend_clause]] OEM 1. 2. 3. 4. 5. Usar el Storage Manager. Expandir el nodo Tablespace. Seleccionar Tablespace->Aadir Datafile. En la pgina General de la hoja de propiedad, introducir la informacin del fichero. Hacer clic en Crear.

Administracin de Bases de Datos

50
Cambio Del Tamao De Los Ficheros De Datos

HABILITACIN AUTOMTICA DE EXTENSIONES DE FICHEROS DE DATOS Ejemplo ALTER TABLESPACE app_data ADD DATAFILE `/DISK6/app04.dbf SIZE 200M; AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

Tablespace APP_DATA

app01.dbf 1M

app02.dbf 1M

app03.dbf 2M

app04.dbf 2M

Se puede alterar el tamao del fichero de datos de una de las siguientes formas: Automticamente utilizando la opcin AUTOEXTEND. Manualmente utilizando el comando ALTER DATABASE. Redimensionamiento Automtico de Ficheros de Datos La opcin AUTOEXTEND habilita o deshabilita la extensin automtica de ficheros de datos. Cuando un fichero de datos es creado, los siguientes comandos SQL pueden ser utilizados para especificar la extensin automtica del fichero: CREATE DATABASE CREATE TABLESPACE DATAFILE ALTER TABLESPACE ADD DATFILE

Fijar AUTOEXTEND durante la creacin de un Fichero Utilizar el siguiente comando para aadir a un fichero de datos la posibilidad de la extensin automatica: ALTER TABLESPACE tablespace ADD DATAFILE filespec [autoextend_clause] [, [autoextend_clause]] OEN 1. 2. 3. 4. 5. 6. Usar el Storage Manager. Expandir el nodo Tablespace. Seleccionar Tablespace->Add Datafile. En la pgina General de la hoja de propiedad, introducir la informacin de almacenamiento. En la pgina Autoextend de la hoja de propiedad, introducir la informacin. Hacer clic en Crear.

Especificar AUTOEXTEND para un Fichero de Datos Existente Utilizar el comando SQL ALTER DATABASE para habilitar o deshabilitar la extensin automtica de ficheros para ficheros de datos existentes: ALTER DATABASE [database] DATAFILE filename [,filename]... Autoextend_clause OEM 1. 2. 3. 4. 5. Usar el Storage Manager. Expandir el nodo Tablespace. Seleccionar el fichero de datos. En la pgina Autoextend de la hoja de propiedad, desmarcar el botn Enable Auto Extend. Hacer clic en Aplicar.

Administracin de Bases de Datos

51
Para deshabilitar el AUTOEXTEND ALTER DATABASE DATAFILE filename AUTOEXTEND OFF

Cambio Del Tamao Manualmente De Los Ficheros De Datos

Ejemplo: ALTER DATABASE DATAFILE DISK5/app02.dbf RESIZE 200M;

Tablespace APP_DATA

app01.dbf 1M

app02.dbf 1M 1M

Volver a dimensionar los Ficheros de Datos En lugar de aadir espacio a la BD aadiendo ficheros de datos, el administrador puede cambiar el tamao del fichero de datos. El administrador de la BD puede corregir errores estimando las necesidades de espacio y reclamando el no utilizado en la BD. Utilice el comando ALTER DATABASE para incrementar o disminuir manualmente el tamao de un fichero de datos: ALTER DATABASE [database] DATAFILE filename [, filename]... RESIZE integer {K | M] Donde: Integer es el tamao absoluto del fichero de datos resultante.

Cambio De La Seleccin De Almacenamiento

Cambio de las Definiciones de Almacenamiento Ejemplo ALTER TABLESPACE app_data MINIMUN EXTENT 2M; ALTER TABLESPACE app_data DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 999);

Utilice el comando ALTER TABLESPACE para alterar la definicin de almacenamiento por defecto, en un tablespace: ALTER TABLESPACE tablespace (MINIMUM EXTENT integer [K | M] | DEFAULT storage_clause )

Administracin de Bases de Datos

52
OEN 1. 2. 3. 4. 5. Usar el Storage Manager. Expandir el nodo Tablespace. Seleccionar el fichero de datos. En la pgina de Extensiones de la hoja de propiedad, introducir la informacin de almacenamiento. Hacer clic en Aplicar.

Poner Los Tablespaces Offline U Online

ESTADO OFFLINE El tablespace que est fuera de la lnea, no Est disponible para tener acceso a l. Ni el tablespace SYSTEM, ni cualquier otro con segmentos rollback activos, pueden ser tomados fuera de lnea.

Ejemplo ALTER TABLESPACE app_data OFFLINE;

Los usuarios solo pueden acceder a un tablespace solo si est on-line. El administrador de la BD puede poner un tablespaceoff-line para hacer que: Poner una parte de la BD no disponible, manteniendo la accesibilidad para el resto de la BD. Tablas o una aplicacin no disponible, mientras realoja los ficheros de datos.

El Estado OFF-LINE de un Tablespace El servidor Oracle no permite ninguna sentencia SQL para referenciar objetos contenidos en este tablespace. El servidor Oracle realiza un checkpoint en todos los ficheros de datos del tablespace antes de que este sea puesto offline. Los usuarios intentan acceder a tablas u objetos de un tablespaces que est off-line, bien sea directamente o controlando la integridad referencial, reciben un error. Cuando un tablespace se pone off-line o de nuevo on-line, el suceso es grabado en el diccionario de datos y el fichero de control. Si un tablespace est off-line cuando Ud. cierra una BD, el tablespace permanece off-line y no ser controlado cuando la BD sea montada y vuelta a abrir de nuevo.

Poner el Tablespace Off-line Siempre que la BD sea abierta, un administrador puede poner off-line cualquier tablespace, excepto el del SYSTEM, o alguno con segmentos rollback activos o segmentos temporales. Cuando un tablespace en puesto off-line, el servidor Oracle pone todos los ficheros de datos asociados off-line. ALTER TABLESPACE tablespace (ONLINE | OFFLINE [NORMAL | TEMPORARY | INMEDIATE] )

OEN 1. 2. 3. 4. 5. Usar el Storage Manager. Expandir el nodo Tablespace. Seleccionar el tablespace. En la pgina General de la hoja de propiedad, seleccionar el radio button Offline. Hacer clic en Aplicar.

Nota: Hay tres modos diferentes por los que un tablespace puede ser puesto Off-line: Normal Temporalmente Inmediato Oracle recomienda que si no suceden errores en ningn fichero de datos, poner un tablespace off-line en el modo normal.

Administracin de Bases de Datos

53
Movimientos De Los Ficheros De Datos

Movimiento de los Ficheros de Datos: ALTER TABLESPACE El tablespace APP_DATA tiene que estar off-line. El destino del fichero de datos tiene que existir.

Ejemplo ALTER TABLESPACE app_data RENAME DATAFILE DISK4/app01.dbf TO /DISK5/app01.dbf;

Dependiendo del tipo de tablespace, el administrador de la BD puede mover ficheros de datos utilizando uno de los siguientes tres mtodos: Usando el Comando ALTER TABLESPACE E comando ALTER TABLESPACE se aplica solo a ficheros de datos en un tablespace non-SYSTEM, que no contenga segmentos rollback activos o temporales: ALTER TABLESPACE tablespace RENAME DATAFILE filename [, filename]... TO filename [, filename]...

Utilice el proceso siguiente para volver a nombrar un fichero de datos: 1. 2. 3. 4. 5. Poner el tablespace off-line. Utilizar el comando del sistema operativo para mover o copiar los ficheros. Ejecutar el comando ALTER TABLESPACE RENAME DATAFILE. Poner el tablespace on-line Utilice un comando del sistema operativo para borrar el fichero si es necesario.

Movimiento De Ficheros De Datos: ALTER DATABASE La base de datos tiene que estar montada. Tiene que existir el fichero de datos destino.

Ejemplo: ALTER DATABASE RENAME FILE /DISK1/system01.dbf TO /DISK2/system01.dbf;

Uso del Comando ALTER DATABASE El comando ALTER DATABASE puede ser utilizado para mover cualquier tipo de ficheros de datos: ALTER DATABASE [database] RENAME FILE filename [, filename]... TO filename [, filename]...

Administracin de Bases de Datos

54
Utilice el proceso siguiente para volver a nombrar los ficheros en los tablespaces que no pueden ser puestos off-line: 1. 2. 3. 4. 5. OEN 1. 2. 3. 4. Nota: Usar el Storage Manager. Expandir el nodo del Tablespace y seleccionar el fichero de datos. En la pgina General de la hoja de propiedad, actualizar la informacin del fichero. Hacer clic en Aplicar. Cerrar la BD . Utilizar un comando del sistema operativo para mover los ficheros. Montar la BD. Ejecutar el comando ALTER DATABASE RENAME FILE. Abrir la BD.

Estos comandos verifican que el fichero existe en la nueva posicin, no crean o mueven ficheros. Proporcionar siempre nombres de ficheros completos (incluidas las vas de acceso) para diferenciar los ficheros de datos antiguos de los nuevos.

Tablespaces De Solo-Lectura

EL ESTADO DEL TABLESPACE READ-ONLY Ejemplo: ALTER TABLESPACE app_data READ ONLY; El tablespace APP_DATA esta disponible solo Para operaciones de lectura.

Antes que el DBA pueda poner un tablespace de slo-lectura, tiene que cumplir con varias condiciones. La forma recomendada para cumplir con estas restricciones es arrancar el instance en el modo restringido. Para poner un tablespace slo-lectura de forma que se pueda escribir en l, todos los ficheros de datos en el tablespace tienen que estar on-line. Poner los tablespace en slo lectura ser la causa de que se realice un checkpoint en los ficheros de datos del tablespace. Creacin de Tablespaces de Slo-Lectura en un Soporte de Slo-Lectura Poner un tablespace en slo-lectura. Copiar sus ficheros en un soporte de slo-lectura. Volver a nombrar los ficheros de datos para sealar la nueva posicin.

Borrado De Tablespaces

BORRADO DE TABLESPACES

ES NECESARIO PONERLO OFFLINE ANTES DE BORRARLO

La siguiente sentencia elimina el tablespace APP_DATA y todos sus contenidos. Ejemplo DROP TABLESPACE app_data INCLUDING CONTENTS;

Administracin de Bases de Datos

55
Ud. puede eliminar un tablespace de la BD, cuando ste y su contenido no vayan a ser necesarios, utilizando el comando DROP TABLESPACE: DROP TABLESPACE tablespace [INCLUDING CONTENTS [CASCADE CONSTRAINTS]] donde: tablespace INCLUDING CONTENTS nombre del tablespace que se quiere borrar. borra todos los segmentos del tablespace.

CASCADE CONSTRAINTS borra las restricciones de integridad referencial de las tablas fuera del tablespace que se refieren a las clave primaria y nica de las tablas en el tablespace borrado. Directrices OEN 1. 2. 3. 4. Usar el Storage Manager. Expandir el nodo del Tablespace y seleccionar el tablespace. Seleccionar el tablespace->Eliminar. Hacer clic en OK. Un tablespace que continua teniendo datos no puede ser borrado sin la opcin INCLUDING CONTENTS. Cuando un tablespace ha sido borrado, sus datos no estn en la BD. Cuando un tablespace es borrado, solo se borran los ficheros punteros del fichero de control de la BD asociada. Los ficheros de la BD continan existiendo y tienen que ser borrados explcitamente a nivel del sistema operativo. Incluso si un tablespace est seleccionado en slo-lectura puede ser borrado, con segmentos dentro de l. Esto es posible ya que el comando DROP solo actualiza el diccionario de datos (que tiene que ser lectura-escritura), pero nos los ficheros fsicos que conforman el tablespace. Est recomendado que se ponga el tablespace off-line antes de borrarlo para asegurar que ninguna transaccin accede ningn de los segmentos del tablespace.

Informacin Del Diccionario De Datos


OBTENCIN DE INFORMACIN DE TABLESPACE DBA_TABLESPACE TABLESPACE_NAME NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS

Para listar los nombres y los parmetros de almacenamiento por defecto de todos los tablespaces en una BD utilice la siguiente consulta en la vista DBA_TABLESPACES: SVRMGR> SELECT tablespace_name, initial_extent, next-extent, max_extents, pct_increase, min_extlen FROM 2 dba_tablespaces; tablespace_name ----------------------SYSTEM RBS TEMP DATA01 4 rows selected initial_extent ----------------10240 10240 262144 204800 next-extent -------------10240 10240 262144 204800 max_extents ----------------121 121 999 999 pct_increase ----------------50 50 50 50 min_extlen -------------0 0 131072 51200

Administracin de Bases de Datos

56
Utilice la siguiente consulta para obtener informacin a cerca del tipo de tablespace, tal como temporal o permanente y la disponibilidad de los ficheros de datos: SVRMGR> SELECT tablespace_name, contents, status FROM dba_tablespaces; tablespace_name ----------------------SYSTEM RBS TEMP DATA01 4 rows selected contents ------------------PERMANENT PERMANENT TEMPORARY PERMANENT status -------------ONLINE ONLINE ONLINE ONLINE

Obtencin De Informacin De Los Ficheros De Datos DBA_DATA_FILES FILE_NAME TABLESPACE_NAME BYTES AUTOEXTENSIBLE MAXBYTES INCREMENT_BY

La siguiente consulta devuelve informacin a cerca del tablespace al que los ficheros de datos pertenecen y la seleccin de la opcin AUTOEXTEND: SVRMGR> SELECT file_name, tables_name, bytes, autoextensible, maxbytes, increment_by FROM dba_data_files; file_name ------------------------------/DISK1/SYSTEM01.dbf /DISK2/RBS01.dbf /DISK3/TEMP01.dbf /DISK4/DATA01.dbf /DISK5/DATA02.dbf 5 rows selected. tables_name ------------------SYSTEM RBS TEMP DATA01 DATA02 bytes autoextensible maxbytes increment_by ------------- -------------------- ------------- -----------------31457280 NO 0 0 5242880 NO 0 0 5242880 NO 0 0 5242880 NO 0 0 512000 YES 15728640 512

OBTENCION DE INFORMACION DE TABLESPACES Y FICHEROS DE DATOS A PARTIR DEL FICHERO DE CONTROL

V$DATAFILE - TS# - NAME - FILE# - RFILE# - STATUS - ENABLED - BYTES - CREATE_BYTES

V$TABLESPACE - TS# - NAME

La siguiente consulta de la vista de rendimiento dinmico V$DATAFILE lista los nombres de los ficheros de datos y tamao. El nombre del tablespace al que los ficheros de datos pertenecen y la disponibilidad el estado OFFLINE, ONLINE, READ WRITE, o READ ONLYde los ficheros de datos. SVRMGR> SELECT file#, d.name, status, enabled, bytes, create_bytes, t.name FROM v$datafile d, v$tablespace t 2 WHERE t.ts#=d.ts#;

Administracin de Bases de Datos

57
FILE# -------1 2 3 4 5 RFILE -------1 2 3 4 5 #D.NAME -----------------------------------/DISK1/SYSTEM01.dbf /DISK2/RBS01.dbf /DISK3/TEMP01.dbf /DISK4/DATA01.dbf /DISK5/DATA02.dbf STATUS ------------SYSTEM ONLINE ONLINE ONLINE ONLINE ENABLED BYTES CREATE_BYT T.NAME -------------------- ------------- ------------------- -----------READ WRITE 31457280 31457280 SYSTEM READ WRITE 5242880 5242880 RBS READ WRITE 5242880 5242880 TEMP READ WRITE 5242880 5242880 DAT001 READ WRITE 512000 512000 DATA02

5 rows selected. La columna FILE# contiene el numero absoluto de ficheros de datos y la columna RFILE# el nmero relativo de ficheros de datos del tablespace.

Consideraciones Para La Creacin De Tablespaces


GUIA Utilice mltiples tablaspaces. Especificar los parmetros de almacenamiento para los tablespaces. Asignar cuotas de tablespaces para los usuarios.

Utilice Mltiples Tablespaces El uso de mltiples tablespaces le da ms flexibilidad en la realizacin de operaciones con la BD. Separar los datos del usuario de los del diccionario. Separar los datos de aplicacin de ambos. Almacenar los ficheros de datos de diferentes tablespaces en controladores de discos distintos para reducir los conflictos I/O. Separar los fragmentos de rollback de los segmentos de datos, para prevenir un fallo del disco sea la causa de prdida permanente de datos. Ponga los tablespaces individuales off-line mientras otros permanecen on-line. Reserve los tablespaces para un tipo particular de uso de la BD, tal como la actividad de actualizacin, la slo-lectura o almacenamiento de segmentos temporales. Hacer backup de tablespaces individualmente.

Especificar los Parmetros de Almacenamiento para el Tablespace Especificar los parmetros de almacenamiento por defecto para objetos que sern creados en un tablespace. Seleccionar los parmetros de almacenamiento para que un tablespace estime el tamao de un objeto tpico que vaya a ser creado en el mismo.

Asignar Cuotas del Tablespace a los Usuarios. Asignar cuotas del tablespace, segn sea necesario, para los usuarios de la BD.

Movimiento De Objetos Entre TABLESPACES


Existen diferentes mtodos para reubicar objetos, en esta ocasin se comentarn los mtodos de reubicacin por tabla y por usuario.

Mtodo 1 Reubicacin por Tabla Es posible mover una o varias tablas a otro tablespace, ste mtodo puede aplicar en casos de tablas muy grandes y con un alto grado de criticidad,a continuacin se muestran los pasos: 1. 2. Exportar la tabla o tablas que sern reubicadas. Ejemplo exp usr/password file=exp.dmp tables=tabla1,tabla2 log=exp.log Borrar tablas de su origen. Ejemplo sql> DROP TABLE tabla1; sql> DROP TABLE tabla2; Es importante verificar si se cuenta con el espacio necesario para la reubicacin de las tablas, el siguiente comando nos puede ser de utilidad para eliminar las marcas de extents que han dejado algunas tablas modificadas en el tablespace destino. sql>ALTER TABLESPACE tablespace_destino COALESE;

Administracin de Bases de Datos

58

3.

Ejecutar import del archivo creado en el export con el parmetro indexfile=y para obtener la sentencia de creacin de las tablas. Ejemplo: Imp usr/password file=exp.dmp indexfile=sentencia.sql full=y

4.

Editar el archivo resultante (sentencia.sql) para modificar la clusula tablespace con el nuevo tablespace para las tablas, es necesario quitar los comentarios REM de cada linea de dicho archivo. Ejemplo: CREATE TABLE usr.tabla1 (columna1 VARCHAR2(5), columna2 NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 10240 NEXT 10240 MINEXTENTS 1 MAXEXTENTS 121 PCTINCREASE 50 FREELISTS 1 FREELIST GROUP 1 ) TABLESPACE TABLESPACE_DESTINO;

5. 6.

Ejecutar el archivo editado (sentencia.sql) para la creacin de la estructura de la tabla. Importar el archivo original (exp.dmp) con el parmetro ignore=y caractersticas. Ejemplo: imp usr/password file=exp.dmp ignore=y tables=tables1,tables2 verificar que se inserten correctamente los registros de la tablas y se actualicen sus constraints. para actualizar las tablas con todos sus registros y

Mtodo 2 reubicar por usuario En ocasiones es necesario reubicar todas las tablas de un usuario en especfico de un tablespace a otro: 1. Generar un export a nivel de usuario o general de la base de datos. Ejemplo: exp usr/password file=exp.dmp owner=user1,user2 exp usr/password file=exp.dmp full=y 2. Borrar las tablas que sern reubicadas. Ejemplo: sql>DROP TABLE user1.tabla1 sql>DROP TABLE user2.tabla2 3. Para el usuario con las tablas que sern reubicadas, modificar las siguientes configuraciones: a) Modificar el parmetro DEFAULT_TABLESPACE con el nombre del nuevo tablespace de destino. Ejemplo: ALTER USER user1 DEFAULT TABLESPACE tablespace_destino b) Eliminar la quota en el tablespace original de las tablas, con sta accin, el usuario no tendr espacio asigando dentro del tablespace. ALTER USER user1 QUOTA 0 ON tablespace_origen c) Agregar quota en el tablespace de destino, donde se alojarn las tablas: ALTER USER user1 QUOTA bytes ON tablespace_destino d) Si el usuario user1 tiene asignado el role de RESOURCE, es necesario eliminar la opcin UNLIMITED TABLESPACE.

Para verificar y eliminar los roles asigandos al usuario user1: SELECT GRANTED ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE=USER1; REVOKE UNLIMITED TABLESPACE FROM user1;

Administracin de Bases de Datos

59

4.

Es necesario verificar que el usuario (user1) no pueda crear objetos en el tablespace donde se encontraban las tables originalmente. Crear una tabla especificando el tablespace original. CREATE TABLE tabla1 (columna1 number ) TABLESPACE tablespace_origen Si recibe un ORA-01950 No privileges on tablespace como resultado de la creacin de la tabla, entonces se eliminaron exitosamente los privilegios de creacin de objetos en dicho tablespace. Normalmente un import intenta cargar las tablas en el mismo tablespace donde fueron extraidas. Si el usuario con el que se cre el export (user1) no tiene privilegios de creacin de objetos en el tablespace original, el import cargar los datos en su nuevo DEFAULT TABLESPACE. Nota: el usuario del cual sern reubicados las tablas por medio del import, NO DEBE tener privilegios de creacin de objetos en el tablespace de donde provienen los datos del export.

5.

Ejecutar un import a nivel de usuario para user1 Imp user/passwd file=exp.dmp fromuser=user1

6.

Despus de verificar la correcta carga de los datos en el Nuevo tablespace, activar nuevamente el role RESOURCE para agregar UNLIMITED TABLESPACE, en caso de que el usuario lo tuviera originalmente.

Administracin de Bases de Datos

60

Captulo N 8
ESTRUCUTURA DE ALMACENAMIENTO Y RELACIONES
VISTA GENERAL

Una BD es agrupada lgicamente en tablespace. Un tablespace puede constar de uno o ms segmentos. Cuando un segmento se crea, consta al menos de una extensin, que es un grupo de bloques contiguos. Cuando el segmento crece, las extensiones se van aadiendo al segmento. Un bloque, llamado tambin bloque lgico, es una unidad mnima utilizada para operaciones de lectura-escritura.

Tipos De Segmentos
Los segmentos son objetos que ocupan espacio en una BD. Esta seccin describe los tipos diferentes de segmentos:

TABLA PARTICIN TABLA CLUSTER NDICE

Tabla Una tabla conocida tambin como una tabla no agrupada o no particionada, es el medio ms comn de almacenamiento de datos dentro de la BD. Los datos dentro de una tabla son almacenados sin un orden determinado, y el administrador de la BD tiene muy poco control de la localizacin de las filas dentro de los bloques de la tabla. Todos los datos de la tabla no particionada tiene que ser almacenados en una tablespace. Particin de una Tabla La escalabilidad y disponibilidad son los intereses mas importantes cuando hay una tabla en una BD de uso muy frecuente. En estos casos, los datos dentro de una tabla tienen que ser almacenados en varias particiones, cada una de las cuales reside en un tablespace diferente. El servidor Oracle normalmente soporta el particionamiento por rangos de valores de clave. Si una tabla es particionada cada una de las particiones es un segmento y pueden especificarse los parmetros de almacenamiento para controlarlos independientemente. El uso de este tipo de segmentos requiere la opcin de particionamiento en Oracle8 Enterprise Edition. Cluster (Agrupamiento) Las filas en un cluster son almacenadas basndose en los valores de la columna clave. Un cluster puede contener una o ms tablas y es un tipo de segmento de datos. Las tablas de un cluster pertenecen al mismo segmento y comparten las mismas caractersticas de almacenamiento. ndice Todas las entradas de un ndice particular son almacenadas dentro de un segmento del ndice. Si una tabla tiene tres ndices, son utilizados tres segmentos de ndice. La razn de este segmento es mirar la posicin de la filas en la tabla basada en una clave especfica.

Administracin de Bases de Datos

61

Tipos De Segmentos Tabla organizada por ndices ndices particin Segmento Rollback Segmento temporal

Tabla organizada por ndices En una tabla organizada por ndices los datos son almacenados dentro del ndice basado en el valor de la clave. Estas tablas no necesitan un buscador de tabla, ya que todos los datos pueden ser recuperados directamente desde el rbol del ndice. ndices particin Un ndice puede ser particionado y situado en varios tablespaces. En este caso, cada particin del ndice se corresponde a un segmento y no puede abarcar mltiples tablespaces. El uso primario de un ndice particionado es minimizar la contencin separando la I/O en el ndice. El uso de este tipo de segmento requiere la opcin Particionamiento dentro de Oracle8 Enterprise Edition. Segmento Rollback El segmento Rollback es utilizado por una transaccin que est haciendo cambios en una BD. Antes de cambiar los datos o los bloques del ndice, el valor anterior es almacenado en el segmento rollback. Esto le permite al usuario deshacer los cambios realizados. Segmento temporal Cuando un usuario ejecuta comandos tales como el CREATE INDEX, SELECT DISTINCT y SELECT GROUP BY, Oracle intenta realizar tantas clasificaciones en la memoria como puede. Cuando una clasificacin necesita mucho espacio, como en la creacin de ndices de una tabla grande, se escriben en el disco resultados intermedios. Es estos casos son creados los segmentos temporales.

Tipos De Segmentos Segmento LOB ndice LOB Tabla Anidada Segmento Bootstrap

Segmento LOB (dba_segments, users_lobs, dba_lobs, all_lobs) Una columna o ms de una tabla puede ser utilizada para almacenar grandes objetos (LOBs) tales como documentos de texto, imgenes o videos. Si la columna es grande, el servidor Oracle almacena estos valores en segmentos separados conocidos como segmentos LOB. La tabla solo contiene un localizador o sealador de la localizacin de los datos LOB correspondiente.

ndice LOB Un ndice LOB es creado implcitamente cuando un segmento LOB se crea. El almacenamiento de caractersticas del ndice LOB puede ser especificado por el administrador de la BD. La razn del ndice segmento LOB es permitir ver una columna de valores LOB especfica. Tabla Anidada Una columna en una tabla puede estar formada por una tabla definida por el usuario como en el caso de elementos dentro de un orden. En estos casos, la tabla interior que es conocida como una tabla anidada, es almacenada como un segmento separado. El uso de una tabla anidada requiere la opcin Objetos de Oracle8 Enterprise Edition. Segmento Bootstrap Un segmento Bootstrap, conocido tambin como el segmento oculto, es creado por el fichero de comandos sql.bsq cuando se crea una BD. Este segmento ayuda a inicializar el diccionario de datos en la memoria en el arranque de la BD. El segmento bootstrap no puede ser consultado o actualizado y no necesita ningn mantenimiento por el administrador de la BD.

Administracin de Bases de Datos

62
Control Del Uso De Extensiones Por Los Segmentos
PRIORIDAD DE LA CLUSULA DE ALMACENAMIENTO

Una columna de almacenamiento puede ser especificada a nivel del segmento para controlar cmo la extensiones son asignadas a ellos.

Asignacin y Desasignacin de Extensiones Asignadas cuando el segmento es: o Creado o Extendido o Alterado Desasignadas cuando el segmento es: o Borrado o Alterado o Truncado o Automticamente dimensionado (solo segmentos rollback)

Cuando se crea un tablespaces los ficheros de datos del mismo contienen los siguientes elementos: Un bloque de cabecera, que es el primer bloque del fichero. Una extensin libre que consta de la parte restante del fichero de datos. A medida que se crean los segmentos, se va colocando en las extensiones libres de un tablespaces. El espacio continuo utilizado por el segmento recibe el nombre de extensin utilizada. Cuando los segmentos liberan espacio, las extensiones liberadas se aaden al pool de extensiones libres disponibles en un tablespace. La liberacin y ocupacin frecuentes de extensiones podra llevar a la fragmentacin del espacio dentro de los ficheros de datos del tablespace.

Datafiles o Ficheros de Datos

Parmetros De Utilizacin Del Espacio Del Bloque


INITRANS MAXTRANS PCTFREE PCTUSED

Administracin de Bases de Datos

63

Parametros Que Contronan La Concurrencia


INITRANS y MAXTRANS: especifican el nmero mximo de entradas de transacciones, que son creadas en un ndice o en un bloque de datos. INTRANS: tiene un valor por defecto de 1 para un segmento de datos, y 2 para un segmento de ndice, garantiza el mnimo de concurrencia. MAXTRANS: tiene un valor por defeto de 255, selecciona el lmite del nmero de transacciones concurrentes que pueden hacer cambios en un bloque de datos o un bloque de ndice. Cuando se selecciona, este valor restringe el uso de espacio para las entradas de transaccin y de este modo garantiza que hay suficiente espacio en el bloque para ser usado por las filas o los datos del ndice.

Parmetros Que Controlan El Uso Del Espacio De Datos


PCTFREE: para un segmento de datos, especfica el porcentaje de espacio en cada bloque reservado para el crecimiento resultante de actualizaciones de filas en el bloque. Este valor por defecto es 10 (%). para un segmento de datos, representa el porcentaje mnimo de espacio utilizado que el servidor oracle intenta mantener para cada bloque de datos de la tabla. Un bloque es puesto de nuevo en la pista de bloques libres cuando su espacio usado cae por debajo de PCTUSED. El valor por defecto es 40 (%).

PCTUSED:

La pista de bloques libres de un segmento es una lista de bloques que son candidatos para la acomodacin de inserciones futuras. Un segmento, por defecto se cea con una pista de bloques libres. Los segmentos pueden ser creados con un nmero mayor de pistas de bloques libres, seleccionando el parmetro FREELIST de la clusula de almacenamiento. Tanto PCTFREE y PCTUSED son calculados como porcentaje de espacio de datos disponible, esto es, el espacio del bloque que permanece despus de deducir el espacio de la cabecera del tamao total del bloque.

Uso del espacio del bloque

Los siguientes pasos explican como es utilizado el espacio dentro de un bloque para un segmento de datos, tal como una tabla con PCTFREE = 20 y PCTUSED = 40 1. Las filas son insertadas en el bloque hasta que la utilizacin alcanza el 80%. El bloque no vuelve a estar disponible para inserciones cuando las filas ocupan el 80% del espacio para datos disponibles en el bloque.

Administracin de Bases de Datos

64
2. El 20% restante puede ser utilizado para los incrementos de tamao de las filas, por ejemplo, en el caso en que una columna que originalmente era null, se actualiza y se le signa un valor. As la utilizacin del bloque puede exceder del 80%, como resultado de una actualizacin. Si las filas del bloque son borradas o si se reduce su tamao como resultado de actualizaciones, la utilizacin del bloque puede caer por debajo del 80%. No obstante, un bloque no se utiliza para inserciones hasta que su utilizacin no cae por debajo de PCTUSED que es del 40%. Cuando la utilizacin cae por debajo de PCTUSED, el bloque est disponible para inserciones. Como las filas son insertadas en el bloque, la utilizacin del mismo se incrementa y el ciclo se repite empezando por el paso 1.

3.

4.

Unin de espacio libre


ALTER TABLESPACE data01 COALESCE; El espacio contiguo puede ser librado cuando se desasignan varias extensiones dentro de un tablespace. Este puede ser el caso, por ejemplo, de dos tablas que son borradas. En el momento en que el espacio es desasignado, pueden existir dos extensiones contiguas. Estas extensiones pueden unirse para formar una, en cualquiera de las siguientes condiciones: Cuando SMON inicia una transaccin de espacio para que se unan las extensiones adyacentes libres. Cuando el servidor Oracle necesita asignar una extensin que requiere espacio de ms de una extensin adyacente libre. Cuando lo solicita el administrador de la BD.

Nota: SMON une extensiones solo en los tablespaces en los que PCTINCREASE es mayor que cero. La seleccin PCTINCREASE=1 en la clusula de almacenamiento por defecto para tablespaces que contienen objetos de usuario para habilitar la unin automtica de espacio libre. SELECT file_id, block_id, blocks, bytes FROM dba_free_space WHERE tablespace_name=SYSTEM ORDER BY 1,2; a
FILE_ID

b
BLOCK_ID

c
BLOCKS

d
BYTES

1 2 3 4 5

1 1 1 2 2

1801 1876 5107 5632 6232

75 175 525 600 2055

153600 358400 1075200 1228800 4208640

De esta forma se cumple que b1+c1=b2 y a1=a2, el espacio contenido en d1 y d2 puede ser colapsado b2+c2<> b3 por lo tanto el espacio contenido en d3 seguir igual. ALTER TABLESPACE SYSTEM COALESCE; SELECT file_id, block_id, blocks, bytes FROM dba_data_files WHERE tablespace_name=SYSTEM ORDER BY 1,2;
FILE_ID BLOCK_ID BLOCKS BYTES

1 1 2

1801 5107 5632

250 525 2655

512000 1075200 5437440

Administracin de Bases de Datos

65
Unin baja demanda
La visualizacin DBA_FREE_SPACE_COALESCED puede ser utilizada para encontrar si algn tablespace tiene extensiones que puedan ser unidas. Utilice la siguiente consulta para obtener esta informacin: SVRMGR> SELECT tablespace_name, total_extents, percent_extents_coalesced FROM dba_free_space_coalesced WHERE percent_extents_coalesced <> 100; TABLESPACE -------------------RBS DATA01 2 rows selected TOTAL_EXPE -------------------3 9 PERCENT_EX -------------------33 22

La unin de espacio libre en un tablespace puede ser realizada ejecutando el comando ALTER TABLESPACE tablespace_name COALESCE

OEM 1. Utilice el Tablespace Manager. 2. Expandir el nodo Tablespace. 3. Seleccionar Tablespace. 4. Seleccionar Herramientas -> Unir Extensiones Libres.

Bloque De La Base De Datos


Unidad mnima de I/O. Consta de uno o ms boques de O/S. Definido por DB_BLOCK_SIZE. Definido en la creacin de la BD.

Contenido del Bloque de la BD Cabecera Espacio libre Datos

Cabecera Contiene la direccin del bloque de datos, el directorio de tablas, directorio de filas y entradas de transaccin que son utilizadas cuando las transacciones hacen cambios en la filas del bloque. Los bloques de cabecera crecen de arriba hacia abajo. Datos La fila de datos se inserta en el bloque de arriba abajo. Espacio Libre Est en el medio, permitiendo tanto a la cabecera como a las filas espacio para crecer, si es necesario. El espacio libre de un bloque es inicialmente contiguo. No obstante, los borrados y actualizaciones pueden fragmentar este en el bloque. El espacio en el bloque es unido por el servidor Oracle cuando es necesario.

Administracin de Bases de Datos

66
Obtencin De Informacin De Estructuras De Almacenaje
VISTAS DEL DICCIONARIO DE DATOS Extensiones usadas DBA_EXTENTS Extensiones libres DBA_FREE_SPACE

Segmentos DBA_SEGMENTS

Ficheros de Datos DBA_DATA_FILES

Tablespaces DBA_TABLESPACE

Las relaciones entre tablespaces, datos, ficheros de datos, segmentos y extensiones (ambas, usadas y libres) pueden ser visualizadas consultando el diccionario de datos. Cuando se crea un tablespace con un fichero o ms, se aade una fila al DBA_TABLESPACES. Por cada fichero de la BD, se aade una fila al DBA_DATA_FILES. En esta etapa, el espacio en cada fichero de datos, excluyendo el fichero de la cabecera, se muestra en DBA_FREE_SPACE como una extensin libre. Cuando se crea un segmento es visible una fila en DBA_SEGMENTS. El espacio situado en las extensiones de este segmento puede ser visualizado desde DBA_EXTENTS, mientras que se ajusta DBA_FREE_SPACE para mostrar el espacio inferior libre en los ficheros donde las extensiones han sido creadas por el segmento. Todo el espacio de un fichero tiene que estar reconocido tanto en DBA_FREE_SPACE como en DBA_EXTENTS.

Consulta De Informacin De Segmentos


Consultar la vista DBA_SEGMENTS para controlar el nmero actual de extensiones y bloques situados en un segmento.

SVRMGR> 2 3

SELECT segment_name, tablespace_name, extents, blocks FROM dba_segments WHERE owner=SCOTT; TABLESPACE_NAME -----------------------------DATA01 DATA01 DATA01 DATA01 DATA01 EXTENTS BLOCKS -------------- -----------5 55 1 5 1 5 1 5 1 5

SEGMENT_NAME ------------------------EMP DEPT BONUS SALGRADE DUMMY 5 rows selected.

Obtencion De La Informacion De Extensiones Utilizadas


Usar la vista DBA_EXTENTS para controlar las extensiones de un segmento dado. SVRMGR> 2 3 4 SELECT extent_id, file_id, block_id, blocks FROM dba_extents WHERE owner=SCOTT; AND segment_name=EMP; BLOCK_ID -------------2 27 32 42 57 BLOCKS -----------5 5 10 15 20

EXTENT_ID FILE_ID -------------------------0 4 1 4 2 4 3 4 4 4 5 rows selected.

Administracin de Bases de Datos

67
Control De La Informacin De Extensiones Libres
Usar la vista DBA_FREE_SPACE para controlar las extensiones de un segmento dado. SVRMGR> 2 3 SELECT tablespace_name, COUNT(*), MAX(blocks), SUM (blocks) FROM dba_free_space GROUP BY tablespace_name; COUNT(*) -------------2 3 1 1 1 MAX(BLOCKS) --------------------1284 2329 1023 5626 2431 SUM(BLOCKS) --------------------1533 2419 1023 5626 2431

TABLESPACE_NAME -----------------------------DATA01 RBS SORT SYSTEM TEMP 5 rows selected.

Planeamiento De La Localizacin De Los Segmentos


Organizacin de Tablespaces Basadas en la Propensin a la Fragmentacin Tablespaces SYSTEM TOOLS DATAn INDEXn RBSn TEMPn Uso Datos del diccionario Aplicaciones Datos de segmentos ndice de segmentos Segmentos Rollback Segmentos Temporales Fragmentacin Cero Muy Bajo Bajo Bajo Alto Muy Alto

Los diferentes tipos de segmentos tiene propensiones varias para la fragmentacin. Est recomendado que sean situados en diferentes tablespaces para minimizar la prdida de espacio.

Tipos de Objetos y Fragmentacin


La estructura recomendada para el tablespace, sus usos y propensiones de fragmentacin se muestran en la tabla. El siguiente listado nos muestra los diferentes tipos de objetos en orden creciente de propensin a la fragmentacin: Los objetos del diccionario de datos, con la excepcin de la tabla auditora, nunca son borrados o truncados, y por ello no llevan a fragmentar el tablespace. El espacio utilizado por los repositorios de aplicaciones tales como el Oracle Enterprise Manager y el Designer/2000 son solo asignados mientras se reorganizan estas estructuras. Dado que estas tablas son reorganizadas raramente, estos objetos tienen muy poca propensin para la fragmentacin. Los segmentos de datos e ndices utilizados por las aplicaciones escritura-usuario pueden necesitar ser reorganizadas ms frecuentemente que los repositorios. As, tienen una mayor propensin para la fragmentacin que los repositorios de aplicaciones. Ya que los segmentos Rollback puedne desasignar extensiones automticamente, tienen ms tendencia a causar fragmentacin en un sistema con gran actividad de actualizacin. Los segmentos temporales en tablespaces permanentes pueden liberar espacio frecuentemente y por ello tienen que estar situados en tablespaces separados. Los segmentos temporales son analizados en una leccin posterior.

Administracin de Bases de Datos

68

Captulo N 9
MANEJO DE TABLAS
Almacenamiento De Datos Del Usuario
Tabla no agrupada Tabla Particionada Tabla de ndices organizados Tablas agrupadas (Clustered)

Tabla No Agrupada Es la forma ms comn utilizada para almacenar datos de usuario. Es la tabla por defecto. Un administrador de BD tiene un control muy limitado en la distribucin de filas en una tabla no agrupada. Las filas pueden ser almacenadas en cualquier orden dependiendo de la actividad de la tabla.

Tabla Particionada Habilita la construccin de aplicaciones escalables. Tiene las siguientes caractersticas: Una tabla particionada tiene una o ms particiones, cada una de las cuales almacena filas que tiene un grupo de valores clave especfico. Cada particin en una tabla es un segmento y puede ser situado en un tablespace diferente. Las particiones son tiles para tablas grandes que pueden ser consultadas o manipuladas utilizando varios procesos concurrentes. Hay disponibles comandos especiales para manejar particiones dentro de una tabla.

Estructura De Una Fila


Las filas de datos son almacenadas en los bloques de la BD como registros de longitud variable. Las columnas de una fila se archivan en el orden en que estn definidas y las columnas NULL restantes no son almacenadas. Cada fila en una tabla puede tener un nmero distinto de columnas.

Tipos De Datos Oracle

Tipo de Datos

Definidos por el Usuario

Integrados

Escalar

Colecciones

Relacin

VARCHAR2(N) NVARCHER2(N) CHAR(N) NCAHR(N) NUMBER(P,S) DATE RAW(N) LONG BLOB, CLOB NCLOB, BFILE LONG, LONG RAW ROWID

VARRAY TABLE

REF

Administracin de Bases de Datos

69
TIPO DE DATOS ESCALARES DATOS DE CARACTERES: Almacenados tanto como longitud fija como variable en la BD. Long. Fija: CHAR, NCHAR (son almacenados con blancos de rellenos) Long. Variable: VARCHAR2, NVARCHAR2 (solo utilizan el nmero de bytes necesarios para almacenar el valor de la columna actual y puede variar en tamao por cada fila.) DATOS NUMERICOS: Son siempre almacenados como datos de longitud variable. Pueden almacenar hasta 38 dgitos significativos. Requieren: - 1 byte para el exponente - 1 byte por cada 2 dgitos significativos de la mantisa. (incluido punto decimal). - 1 byte por los nmeros negativos si el nmero de dgitos significativos es menor de 38. EJEMPLO: 5,55 5,2 5 555,56 -555,56 3 bytes 3 bytes 2 bytes 4 bytes 5 bytes -555 5551 52 55555 -55 4 bytes 3 bytes 2 bytes 4 byets 3 bytes

DATOS DATE Oracle almacena fechas de 7 bytes en campors de longitud fija. Siempre incluye hora, minutos y segundos. RAW Pequeos datos binarios.

Tipos De Datos Para El Almacenamiento De Objetos Grandes


LONG, LONG ROW Una nica columna por tabla Hasta 2 gigabytes SELECT devuelve datos Datos almacenados in-line Sin soporte de tipo objeto Acceso secuencial a chuncks LOB CLOB y LONG : Datos de caracteres Mltiples columnas por tabla Hasta 4 gigabytes SELECT devuelve localizador Datos almacenados in-line o out--of-line Soporta de tipo objeto Acceso ocasional a chuncks NLOB : Datos de juegos de caracteres nacionales. BLOB y LONG RAW : Datos no estructurados BFILE : datos no estructurados en fich. del S.O.

Los tipos de datos LONG Y LONG RAW se han utilizado previamente para datos no estructurados, tales como imgenes binarias, documentos o informacin geogrfica. Estos tipos de datos son reemplazados por tipos de datos LOB.

Comparacin Lob y Long

LOB permite mltiples columnas LOB por tabla, LONG slo una. Tamao mximo LONG es de 2 Gb. y LOB 4 Gb. LOB devuelve el localizador, LONG devuelve datos. LOB almacena un localizador en la tabla y los datos en otra parte, al menos que el tamao sea menor que el mximo para el tipo de dato varchar2 (4000 bytes). LONG almacena todos los datos en la tabla. LOB permite guardar los datos en un segmento y tablespace separado o en un fichero host.

Administracin de Bases de Datos

70
Tipo De Dato Rowid
Identificador nico para una fila. Utilizado para localizar una fina

Formato ROWID oooooo


Identificador del objeto

FFF
Numero fichero relativo

BBBBBB
Nmero bloque

RRR
Nmero fila

ROWID es una pseudo columna que puede ser consultada con otras columnas de una tabla. Tiene las siguientes caractersticas: ROWID es un identificador nico para cada fila de la BD. ROWID no es almacenado explcitamente como un valor. Adems el ROWID no da directamente la direccin fsica de una fila, puede ser utilizado para localizar la fila. ROWID proporciona los medios ms rpidos de acceso a una fila de una tabla. Los ROWID estn almacenados en ndices para especificar filas con un grupo de valores clave dados.

Formato Rowid ROWID necesita 10 bytes de almacenamiento en disco y aparece utilizando 18 caracteres. Identificador del Objeto: es asignado a cada objeto de datos, tal como tabla o ndice cuando se crea, y es nico en al tablespace. Nmero Relativo del Fichero: es nico para cada fichero dentro de un tablespace. Nmero de Bloque: representa la posicin del bloque que contiene la fila dentro del fichero. Nmero de Fila: identifica la posicin de la entrada en el directorio de filas en la cabecera del bloque. Internamente el nmero de objeto de datos necesita 32 bits, el nmero relativo del fichero necesita 10 bits, el nmero de bloque 22 bits y el nmero de fila necesita 16 bits, resultando hasta un total de 80 bits o 10 bytes. ROWID se muestra utilizando un esquema codificado de base 64, tres posiciones para el nmero relativo de ficheros, seis posiciones para el nmero de bloque y tres para el nmero de fila. El esquema codificado de base 64 utiliza los caracteres A-Z, a-z, 0-90, +, y / un total de 64 caracteres, como el siguiente ejemplo: SVRMGR> SELECT deptno, ROWID FROM scott.dept; DEPTNO ROWID ------------ ---------------------------------10 AAAArsAADAAAAUaAAA 20 AAAArsAADAAAAUaAAB 30 AAAArsAADAAAAUaAAC 40 AAAArsAADAAAAUaAAD En este ejemplo: AAAArs es el nmero del objeto de datos AAD es el nmero relativo del fichero AAAAUa es el nmero de bloque AAA es el nmero de fila para el departamento con DEPTNO=10

Localizacin de una Fila Usando ROWID


Dado que un segmento puede residir slo en un tablespace, usando el nmero del objeto, el servidor Oracle puede determinar el tablespace que contiene la fila. El nmero relativo de fichero dentro del tablespace es utilizado para localizar el fichero, el nmero de bloque lo es para hacerlo con el bloque que contiene la fila y el nmero de fila es utilizado para localizar la entrada de la fila en el directorio de filas. La entrada del directorio de filas puede ser utilizado para localizar el inicio de la fila. As, ROWID puede ser utilizado para localizar cualquier fila dentro de la BD.

Administracin de Bases de Datos

71
ROWID RESTRINGIDO Puede identificar filas dentro de un segmento. Necesita menos espacio.

BBBBBBBB
Nmero bloque

RRRR
Nmero fila

FFFF
Nmero fichero

ROWID restringido es utilizado en objetos como ndices o tablas no particionadas en los que todos las entradas de ndices se refierene a filas dentro del mismo segmento.

Colecciones
Las colecciones son objetos que contiene objetos. Los VARRAY definiciones ordenadas de elementos que contienen un contador y un lmite. Las tablas anidadas son tablas con una columna o variable del tipo de datos TABLE.

Hay dos tipos de colecciones de datos disponibles para almacenar datos respectivos para una fila dada de una tabla. Se necesita la opcin de objetos para definir y utilizar las colecciones. A continuacion se analizan brevemente estos tipos.

Varrays
Son tiles para almacenar listas que contienen un pequeo nmero de elemetos, tales como nmero de telefonos para un cliente. Caracteristicas: Un vector es un grupo ordenado de elementos de datos. Todos los elementos de un vector dado son del mismo tipo de datos. Cada elemento tiene un ndice, que es un nmero correspondiente a la posicin del elemento en el vector. El nmero de elementos en un vector es el tamao del mismo. Oracle permite que vectores tengan tamaos variables, por lo que se les denomina VARRAY, pero el tamao mximo tiene que ser especificado cuando se declara el tipo de vector.

Tablas Anidadas
Estas tablas, proporciona un medio para la definicin de una tabla como una columna dentro de una tabla. Pueden ser utilizadas para almacenar grupos que pueden tener un gran nmero de registros tales como un nmero de lneas en un pedido. En este ejemplo, ORDERS es la tabla principal e ITEMS es la tabla anidada.

Las tablas anidadas tienen generalmente las siguientes caractersticas: Es un grupo de registros o filas no ordenadas. Las filas en una tabla anidada tiene la misma estructura. Las filas en una tabla anidada son almacenadas separadas de la tabla principal con una entrada desde la fila correspondiente en la tabla principal. Las caractersticas de almacenamiento de la tabla anidada puede ser definida por el administrador de la BD. Para una tabla anidada no hay tamao mximo predeterminado.

Tipos de Relacin (REF) Los tipos de relacin son utilizados como punteros dentro de la BD. El uso de estos tipos requieren la opcin de Objetos. Como ejemplo, cada elemento de un pedido podra estar dirigido a, no hacer referencia a una fila en la tabla PRODUCTOS, sin tener que almacenar el cdigo del producto. Tipos Definidos por el Usuario Oracle permite a un usuario definir tipos de datos abstractos y utilizarles dentro de la aplicacin. El uso de esta funcin requiere la opcin de Objetos.

Administracin de Bases de Datos

72
Creacin De Una Tabla

CREATE TABLE employees ( empno NUMBER(4), last_name VARCHAR2(30) deptno NUMBER(2)) PCTFREE 20 PCTUSED 50 STORAGE (INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE data01;

Sintaxis: CREATE TABLE [schema.] table (column datatype [,column datatype ] ) [TABLESPACE tablespace] [PCTFREE integer [PCTUSED integer [INITRANS integer [STORAGE storage_clause ] [ LOGGING | NOLOGGING] [CACHE | NOCACHE]

donde: schema table column datatype es el propietario de la tabla es el nombre de la tabla es el nombre de la columna es el tipo de dato de la columna

TABLESPACE identifica el tablespace donde ser creada la tabla PCTFREE PCTUSED INITRANS MAXTRANS STORAGE LOGGING NOLOGGING CACHE es la cantidad de espacio reservado en cada bloque (en un porcentaje del espacio total menos el lo que de la cabecera) para el crecimiento de las filas. determina el lmite menor de espacio utilizado en un bloque (despus de que se llena PCTFREE) antes de que est disponible para futuras inserciones de filas. especfica el nmero de entradas de transacciones asignadas en cada bloque (por defecto es 1) limita el nmero de entradas de transacciones que pueden ser asignadas en cada bloque (por defecto es 255). identifica la clusula de almacenamiento que determina como las extensiones sern asignadas a la tabla. especfica que la creacin de la tabla ser anotada en el fichero redo log (tambin especfica que todas las operaciones siguientes contra la tabla anotadas. Esto es por defecto). especfica que la creacin de la tabla y cierto tipo de datos no sern anotados en el fichero redo log . especfica que los bloques recuperados para esta tabla se sitan en el extremo ms recientemente utilizado de la lista LRU en el buffer de la SGA incluso cuando se realiza una exploracin total a una tabla. especfica que los bloques recuperados para esta tabla estn situados en el extremo menos recientemente utilizado de la lista LRU en el buffer de la SGA incluso cuando se realiza una exploracin total a una tabla.

NOCACHE

Administracin de Bases de Datos

73
Directriz Para La Creacin De Tablas
Usa algunos tamaos de extensiones estndar para reducir la fragmentacin del espacio. Usa la clusula CACHE para tablas pequeas frecuentemente utilizadas

Site las tablas en un tablespace separado no en el tablespace que tenga segmentos rollback, segmentos temporales e ndices. Usar algunos tamaos de extensin estndar que sean mltiples de 5*DB_BLOCK_SIZE para minimizar la fragmentacin. Para mejorar el rendimiento de las exploraciones de toda la tabla, alinear los tamaos de las extensiones con DB_FILE_MULTIBLOCK_READ_COUNT, que es un parmetro de inicializacin que define cuantos bloques son requeridos por los procesos del servidor en cada llamada de lectura del sistema operativo mientras se lee toda la tabla. Usar la clusula CACHE para referenciar tablas pequeas que parecen ser accedidas muy frecuentemente.

Definicin De Pctfree Y Pctused


Calcular PCTFREE ( Tamao Fila Inicial - Tamao Medio Fila ) * 100 Tamao Fila Inicial Calcular PCTUSED (Tamao Medio Fila * 100) 100 PCTFREE Espacio de datos disponibles

(max length avg insert length) Pctfree = 100 * --------------------------------------------max length Pctused = 100 pctfree 100 * row space / block space

Pctfree = 100 * upd / (upd + ins) Pctused = 100 pctfree * (ups ins) / tamao bloque Upd = cantidad media aadida por modificaciones Ins = media de la fila inicial sin inserciones.

Definiendo PCTFREE Un PCTFREE mayor ofrece ms sitio para la actualizaciones dentro del bloque de una base de datos. Seleccionar el mayor nmero si la tabla tiene: Columnas que inicialmente son nulas y ms tarde son actualizadas con un valor. Columnas que parecen que vayan a incrementar su tamao como resultado de una actualizacin. Un PCTFREE mayor resultar con una densidad de bloque menor cada bloque puede acomodar ms filas. La formula especificada arriba asegura que hay suficiente espacio libre en el bloque para el crecimiento de la fila.

Definiendo PCTUSED Definir PCTUSED para asegurar que el bloque ser devuelto a la lista libre solo cuando haya suficiente espacio para acomodar un porcentaje de filas. Si un bloque de la lista libre no contiene espacio suficiente para insertar una fila, el sevidor Oracle busca en el siguiente bloque de la lista libre. Usando la formula dada se reduce el tiempo de exploracin de la lista libre incrementando la posibilidad de encontrar un bloque con el espacio libre requerido. En ocasiones se asigna a pctused un valor artificialmente elevado mientras que ocurre lo contrario con pctfree con la esperanza que Oracle empaquetara el bloque al mximo. A menudo se ven tablas creadas con los siguientes valores: pctfree 0 pctused 99. Esta forma de proceder se puede convertir en una pesadilla de E/S y puede provocar una caida espectacular de rendimiento del sistema cuando esta misma situacin se repita para muchas tablas. Analizaremos la tabla ADDRESS que tiene una longitud media de fila de 41 bytes. Utilizando un valor del 99% (lo que supone que practicamente la totalidad de los 2048 bytes se encuentran disponibles para almacenar datos, aunque sabemos que esto no es as) se podran marcar los bloques como disponibles para crear una nueva fila cuando slo estuvieran ocupados 2028 bytes, es decir , slo quedaran 20 bytes libres. Por supuesto, este espacio no es suficiente para almacenar una fila de tamao medio y Oracle ejecutara las siguientes operaciones cuando intentara crear una nueva fila: 1. 2. 3. Analizar la lista de bloques libres hasta encontrar un bloque que pueda dar acomodo a la nueva fila. Si se encuentra uno se insertar la fila y, si el espacio ocupado es todava inferior a la cifra mencionada en el parmetro pctused de la tabla, dejar el bloque en la lista de bloques libres. Si no encuentra ninguno, se buscar en el diccionario de datos para encontrar la ubicacin de un bloque capaz de aceptar los nuevos datos.

Administracin de Bases de Datos

74
Disponemos de una frmula que utilizamos para asegurarnos de que esta situacin no va a ocurrir:

PCTUSED = FLOOR ( ( espacio_disponible longitud_media_fila ) / tamao_bloques * 100 ) = FLOOR ( ( 1501 41 ) / 2048 * 100 = FLOOR ( 1460 / 2048 * 100 = 71 %

Notas: SELECT type, description, type_size FROM v$type_size WHERE type IN (UB1,UB2,UB4,SB2,KCBH,KTBIT,KDBH,KDBT); TYPE UB1 UB2 UB4 SB2 KCBH KTBIT KDBH KDBT KTBBH 1) DESCRIPTION UNSIGNED BYTE 1 UNSIGNED BYTE 2 UNSIGNED BYTE 4 SIGNED BYTE 2 BLOCK COMMON HEADER TRANSACTION VARIABLE HEADER DATA HEADER TABLE DIRECTORY ENTRY TRANSACTION FIXED HEADER TYPE_SIZE 1 2 4 2 20 24 14 4 48

Espacio disponible para datos (SAD) = tamao de bloque tamao de cabecera del bloque Db_block_size KCBH UB4 KTBBH ((initrans 1) * KTBIT) - KDBH

2)

Espacio disponible para datos (ADS) = CEIL( SAD * (1 PCTFREE / 100) ) KDBT

3)

Espacio utilizado por fila (SPR) = tamao de la columna incluyendo la long. del byte = tamao de la columna + ( 1, IF tamao columna < 250, ELSE 3) Para todas las columnas contenidas en LOC (suponiendo que la media de LOCATION_NAME es de 11 caracteres) LOC_ID LOCATION_NAME PROVINCIA_ID LOC_TYPE 6+1= 7 30 + 1 = 31 2+1= 3 2+1= 3

TOTAL = 44 bytes (TCS)

4)

Tamao de Fila (ROWSZ) 3 * UB1 + TCS = 3 * 1 + 44= 47 bytes

5)

Espacio utilizado por Fila (SPROW) MAX ( UB1 * 3 + UB4 + SB2, ROWSZ) + SB2 = 49 bytes

6)

N Filas por bloque (RPB) FLOOR( ADS / SPROW) = 31 filas por bloque

Migracion De Filas
(Por bajos valores de PCTFREE). Si pctfree est definido con un valor bajo puede haber espacio insuficiente en un bloque para acomodar a una fila que crece como resultado de una actualizacin. Cuando esto sucede el Servidor Oracle mover toda la fila a un bloque nuevo y dejar una seal en el bloque original hacia la nueva posicin. Este proceso recibe el nombre de Migracin de Filas. Cuando una fila emigra, el rendimiento I/O sociado a esta fila decrece dado que el servidor oracle tiene que explorar dos bloques de datos para recuperar la fila.

Encadenamientos De Filas
Sucede cuando una fila es demasiado larga para caber en un bloque. Es posible cuando la fila contiene columnas que son muy largas. En este caso el Servidor Oracle divide la fila en piezas pequeas que son almacenadas en bloques con punteros para recuperarlas. El encadenamiento puede ser solucionado definiendo un tamao de bloque ms alto o disminuyendo el tamao de las columnas.

Administracin de Bases de Datos

75

Copiado De Una Tabla Existente


CREATE TABLE new_emp STORAGE (INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50 NOLOGGING TABLESPACE data01; AS SELECT * FROM scott.employees;

Usar la clusula NOLOGGING para suprimir la creacin de las entradas redo log y acelerar la creacin de la tabla. Las restricciones, disparadores y privilegios de la tabla no son copiados a la nueva tabla que se crea de esta manera.

Control De Espacio Utilizado Por Las Tablas


CAMBIO DE LOS PARMETROS DE UTILIZACIN DEL BLOQUE Y ALMACENAMIENTO

ALTER TABLE scott.employees PCTFREE 30 PCTUSED 50 STORAGE (NEXT 500K MINEXTENTS 2 MAXEXTENTS 100);

Restricciones El valor INITIAL no puede ser modificado para una tabla. El valor NEXT especificado ser redondeado al valor que sea mltiplo del tamao del bloque mayor o igual valor especificado.

Parmetros de utilizacin de bloques Los parmetros de utilizacin de bloques pueden ser cambiados para: Mejorar la utilizacin del espacio. Minimizar la posibilidad de migracin.

Los efectos del cambio de los parmetros de utilizacin del bloque son los siguientes: PCTFREE Un cambio de PCTFREE afectar a inserciones futuras. Los bloques que no son utilizados para inserciones porque han sido llenados hasta (100-PCTFREE) no se vern afectados hasta que sean devueltos a la lista libre. Solo pueden ser situados en la lista libre si su uso cae por debajo de PCTUSED. PCTUSED Cualquier cambio en PCTUSED afectar a todos los bloques de la tabla. Si una fila es actualizada o borrada, el bloque que contiene la fila ser controlado por su uso y vuelto a utilizar para inserciones si el uso est por debajo de PCTUSED. INITRANS Un cambio en INITRANS solo afecta a nuevos bloques. MAXTRANS Un cambio en MAXTRANS afectar a todos los bloques de la tabla.

Administracin de Bases de Datos

76
Asignacin Manual De Extensiones
ALTER TABLE scott.employees ALLOCATE EXTENT (SIZE 500K DATAFILE /DISK3/DATA01.DBF);

Las extensiones pueden necesitar ser asignadas manualmente: Sintaxis: ALTER TABLE [schema.]table ALLOCATE EXTENT [ (SIZE integer [K|M]] [ DATAFILE filename ]) ] Si se omite SIZE, el servidor Oracle usar el tamao NEXT_EXTENT de DBA_TABLES para asignar la extensin. El fichero especificado en la clusula DATAFILE tiene que pertenecer al tablespace al que pertenece la tabla. Si la clusula DATAFILE, no es utilizada, el servidor Oracle colocar la extensin en uno de los ficheros del tablespace que contenga la tabla. Para controlar la distribucin de extensiones de una tabla a travs de ficheros. Antes de cargar los datos en masa para evitar la extensin dinmica de las tablas.

Truncar Una Tabla

TRUNCATE TABLE scott.employees;

Extent ID

Higth water mark

Espcio libre

El truncado de una tabla borra todas las filas de la misma y libera espacio no utilizado.

Sintaxis: TRUNCATE TABLE [ schema.] table [ {DROP | REUSE } STORAGE ]

Los efectos de utilizar este comando son los siguientes: Todas las filas de la tabla se borran. No se genera ningn dato rollback y el comando se valida implcitamente ya que el TRUNCATE TABLE es un Comando DDL. Los ndices correspondientes tambin se truncan. Una tabla que est siendo referenciada por una clave ajena no puede ser truncada. Los disparadores de borrados no se disparan cuando se utiliza este comando. Si la clusula DROP, que lo es por defecto se utiliza: - Todas las extensiones, excepto por MINEXTENTS, se desasignan. - La high water mark vuelve a la del punto del primer bloque de la tabla. - El valor de NEXT_EXTENT para la tabla se vuelve al tamao de la extensin con la menor extent_id que ha sido designada esto es, si MINEXTENTS es 2, el tamao NEXT_EXTENTS ser seleccionado en el de la tercera extensin de la tabla. Especificar las clusula REUSE para retener todo el espacio utilizado por la tabla.

Administracin de Bases de Datos

77
Borrado De Tablas

DROP TABLE scott.departement CASCADE CONSTRAINT;

Cuando se borra una tabla las extensiones utilizadas por ello se liberan. Si estn contiguas pueden ser unidas automticamente o manualmente en la ltima etapa. La opcin CASCADE CONSTRAINT es necesaria si la tabla es la principal en una relacin de clave ajena.

Validacin De La Estructura De La Tabla


El servidor Oracle verifica la integridad de cada bloque de datos. Utiliza la opcin CASCADE para validar la estructura de todos los ndices de la tabla, y realiza la referencia cruzada entre la tabla y sus ndices. ANALYZE TABLE scott.employees VALIDATE STRUCTURE;

Comando ANALYZE TABLE La funcin principal de este comando, como se muestra en la siguiente seccin, es recopilar estadsticas relativas a una tabla utilizada por el optimizador y almacenarlas en el diccionario de datos. Otros usos del comando, incluyen:

Borrado de estadsticas relativas a la tabla del diccionario de datos. Validar la estructura de la tabla. Identificar filas emigradas y encadenadas de la tabla.

Validacin de la Estructura de la Tabla Cuando la estructura de una tabla se valida, se verifica la integridad de todos los bloques. Generalmente el servidor Oracle busca corrupcin en los bloques cuando estos son ledos. El parmetro de inicializacin, DB_BLOCK_CHECKSUM, se puede seleccionar en TRUE, para calcular un checksum y almacenarlo en la cabecera, de cada bloque de datos cuando es escrito en el disco. Sintaxis: ANALYZE TABLE [schema.] table VALIDATE STRUCTURE [CASCADE] Nota: realizar los procedimientos siguientes en PL/SQL para analizar objetos: DBMS_DDL.ANALYZE_OBJECT para analizar un objeto especfico. DBMS_UTILITY.ANALYZE_SCHEMA para analizar todos los objetos propiedad de un usuario. DBMS_UTILITY.ANALYZE_DATABASE para analizar todos los objetos de la BD.

Para ms informacin sobre estos procedimientos, ver el fichero de comandos dbmsutil.sql.

Administracin de Bases de Datos

78
Anlisis De Todos Un Esquema
Se puede utilizar el procedimiento ANALYZE_SCHEMA del paquete DBMS_UTILITY para analizar todo un esquema. Sintaxis: analyze_schema( schema varchar2, method varchar2, estimate_rows number default null, estimate_percent number default null ) Ejemplo: analyze_schema(OINFGEST,ESTIMATE);

Detencin De La Migracin De Filas


El servidor Oracle agrupa las estadsticas basadas en una muestra de los datos y actualiza el diccionario de datos. ANALYZE TABLE scott.employees ESTIMATE STATISTICS;

Controlar CHAIN_CNT SELECT chain_cnt FROM DBA_TABLES WHERE table_name=EMPLOYEES AND owner=SCOTT

El comando ANALYZE tambin puede ser utilizado para controlar la emigracion o encadenamiento de filas en una tabla. Sintaxis Usar el comando siguiente para generar estadsticas: ANALIZE TABLE [schema.] table (COMPUTE STATISTICS | ESTIMATE STATISTICS [SAMPLE integer (ROWS | PERCENT ) | ) La opcin COMPUTE STATISTICS generar estadsticas basadas en una exploracin total de la tabla, en tanto en que el ESTIMATE STATISTICS generar las basadas en una muestra. Cuando se generan las estadsticas, la columna CHAIN_CNT de la vista del diccionario de datos DBA_TABLES es actualizada con el nmero de filas que estn encadenadas o emigradas. Si emigran un nmero grande de filas, es necesario reorganizar la tabla para eliminar la emigracion.

Administracin de Bases de Datos

79
High Water Mark

- La HWM para una tabla indica el ltimo bloque que ha sido utiliazdo por la misma. - A medida que se introducen datos en una tabla la HWM se mueve para marcar el ltimo bloque utilizado. - La HWM no cambia cuando las filas se borran de la tabla. - La HWM se almacena en la cabecera del segmento de la tabla. - Cuando el servidor Oracle realiza exploraciones en toda la tabla, lee todos los bloques hasta llegar a la HWM. Encontrar la HWM

El paquete DBMS_SPACE contiene un procedimiento que puede ser utilizado para encontrar la HWM y el nmero de bloques por encima de la misma. Tambin esta informacin puede ser obtenida del diccionario de datos despus de analizar la tabla, el paquete DBMS_SPACE habilita un acceso ms rpido a la informacin sin afectar el entorno de optimizacin. El siguiente bloque PL/SQL encuentra e imprime el nmero de bloques situados en una tabla y el nmero de bloques no utilizados. SVRMGR> DECLARE 2 > v_owner VARCHAR2(30) := SCOTT; 3 > v_segment_name VARCHAR2(30) := EMPLOYEES; 4 > v_segment_type VARCHAR2(30) := TABLE; 5 > v_total_blocks NUMBER; 6 > v_total_bytes NUMBER; 7 > v_unused_blocks NUMBER; 8 > v_unused_bytes NUMBER; 9 > v_last_used_extent_file_id NUMBER; 10 > v_last_used_extent_block_id NUMBER; 11 > v_last_used_block NUMBER; 12 > 13 > BEGIN 14 > dbms_space.unused_space (v_owner, v_segment_name, v_segent_type, v_total_blocks, v_total_bytes, v_unused_blocks, 15 > v_ last_used_extent_file_id, v_last_used_extent_block_id, v_last_used_block); 16 > dbms_output.put_line (INITCAP(v_segment_type)|| : ||v_owner||.||v_segment_name); 17 > dbms_output.put_line(Total Blocks : ||TO_CHAR(v_total_blocks)); 18 > dbms_output.put_line(Total Above HWM : ||TO_CHAR(v_unused_blocks)); 19 > END; 20 > /

Administracin de Bases de Datos

80

Table : SCOTT.EMPLOYEES Total Blocks : 25 Total Above HWM : 23

El paquete DBMS_SPACE se crea cuando los ficheros de comandos dbmsutil.sql y prvtutil.plb son invocados por catproc.sql.

Designacion Del Espacio No Utilizado

Si han sido asignadas extensiones grandes en una tabla pero no han sido totalmente utilizadas, es posible desasignar espacio manualmente de la tabla. El espacio as liberado est disponible para usarlo por otros segmentos del tablespaces. Sintaxis: ALTER TABLE [schema.]table DEALLOCATE UNUSED [KEEP integer [K|M] KEEP especifica el nmero de bytes por encima de la HWM que debera ser retenido.

Si el comando es utilizado sin la clusula KEEP, el servidor Oracle desasignar todo el espacio no utilizado por encima de la HWM. Si sta est en una extensin menor que el valor de MINEXTENS, el servidor Oracle liberar las extensiones por encima de MINEXTENS. Considerar el grfico (arriba). Si MINEXTENTS para la tabla es 4 o inferior, el servidor Oracle liberar todos los bloques no utilizados por encima de la HWM, como se muestra. Observe que la quita extensin (con ID=4) ahora tiene slo 5 bloques. Si los MINEXTENTS son 5 para la tabla, el servidor Oracle no tiene espacio liberado desde la quita de estension. NOTA: dado que la desasignacin de espacio utilizando este comando libera espacio no utilizado dentro de una extensin, el uso frecuente de este comando puede conducir a la fragmentacin del espacio de los fichero de datos. Para evitar este problema, seleccionar MINIMUM EXTENT para los tablespaces. Para liberar todo el espacio por encima de la HWM incluso si est por debajo de MINEXTENTS, use KEEP 0.

Funciones Para Calcular El Tamao De Una Tabla


SELECT [SUM|AVG] ( NVL (VSIZE (campo),0) + (DBMS_LOB.GETLENGTH(campo_blob),0)+ ) FROM tabla;

En el caso de un campo long o long raw usar la funcion TO_LOB para convertirlo en BLOB Al analizar una tabla se puede consultar en la vista user_tables el campo avg_row_len, la longitud media de la tabla y en la vista user_tab_columns, el campo avg_col_len, la longitud media de la columna.

Administracin de Bases de Datos

81
Particionamiento De Tablas
Algunas bases de datos crecen hasta cientos de Gbytes, y el tamao de las tablas y de los ndices se incrementan proporcionalmente. Esto hace que la administracin sea ms complicada y ms lenta en tablas tan grandes. Las tablas superiores a los 10 Gbytes son comunes en sistemas datawarehouse, y generalmente necesitan uno o varios ndices asociados, los cuales pueden tener tambin un tamao de Gbytes.

Conceptos Las tablas e ndices particionados soportan mejor el funcionamiento de bases de datos muy grandes (contienen cientos de Gbytes e incluso algunos Tbytes) Las tablas e ndices muy grandes requieren: Datos disponibles aunque se presente algunas fallas parciales Mejorar el performance an con el crecimiento substancial en los volmenes de datos.

La administracin de tablas muy grandes se torna difcil de administrar, ya que al reorganizar o restaurar una tabla, todo el objeto es afectado por la operacin, tambin todas las aplicaciones que utilizan estas tablas e ndices. Pero Por qu las tablas e ndices particionados? Las tablas e ndices pueden ser divididos en pequeas partes denominadas particiones . La particin es particularmente til en base de datos muy grandes, ya que sus tablas son vulnerables a fallas y no son fciles de administar. Oracle soporta hasta 64000 partiones por tabla o ndice. Una tabla partionada puede tener ndices particionados o no partionados. Todas las particiones de una tabla o ndices deben tener los mismos atributos lgicos, es decir, las mismas columnas, tipos de datos, constraints y as sucesivamente. Estos atributos se deben especificar cuando se crea la tabla particionada. Por otro lado las tablas y los ndices particionados pueden tener diferentes atributos fsicos: pctfree, pctused, initrans, maxtrans, tablespace, storage.

Componentes del particionamiento Particionamiento por rango (partition key). La nica funcin SQL soportada en la especificacin values less than es to_date, el partition key puede estar compuesto de hasta 16 columnas. values less than deben ser especificados como una literal. Todas las particiones excepto la primera tienen un valor implcito, el cual es mayor a la particin previa y menor al especificado por values less than. Un insert falla si la partition key es mayor o igual a la ltima particin. Los atributos fsicos pueden ser determinados por particin. Las tablas particionadas no soportan columnas del tipo long, long raw, large object (lob.

Maxvalue en values less than Un maxvalue puede ser especificado por una o ms columnas en values less than. Los datos que tengan un valor binario superior al valor de estos, sern colocados en la particin donde el valor maxvalue sea especificado, mientras que los nulos no pueden ser especificados en la lista values less than.

El partionamiento en claves multicolumna es utilizado cuando: Mltiples columnas estn relacionadas. Una fecha representada mediante 3 columnas de tipo NUMBER en lugar de una columna de tipo DATE.

Actualizando los valores de clave en las particiones No es posible actualizar la columna clave en la particin si la actualizacin provoca que los registros sean movidos de una particin a otra.

Administracin de Bases de Datos

82

Ejemplos CREATE TABLE orden ( ord_year NUMBER(4), ord_month NUMBER(2), ord_day NUMBER(2), ord_id NUMBER(10) ) PARTITION BY RANGE (ord_year, ord_month, ord_day) ( (PARTITION P1 VALUES LESS THAN (1994,07,01) TABLESPACE data01, PARTITION P2 VALUES LESS THAN (1994,08,01) TABLESPACE data02, PARTITION P3 VALUES LESS THAN (1994,09,01) TABLESPACE data03); Table created. COLUMN table_name COLUMN partition_name COLUMN high_value COLUMN tablespace_name FORMAT A15 FORMAT A10 FORMAT A20 FORMAT A20

SELECT table_name, partition_name, high_value, tablespace_name FROM user_tab_partitions WHERE table_name=ORDEN; TABLE_NAME -------------------ORDEN ORDEN ORDEN PARTITION ---------------P2 P3 P1 HIGH_VALUE ------------------1994,08,01 1994,09,01 1994,07,01 TABLESPACE -------------------DATA02 DATA03 DATA01

INSERT INTO orden PARTITION (P1) VALUES(1994,06,21,1); INSERT INTO orden PARTITION (P2) VALUES (1994,07,21,2);

SELECT * FROM orden PARTITION(P1); ORD_YEAR ---------------1994 ORD_MONTH ------------------6 ORD_DAY --------------21 ORD_ID --------------1

INSERT INTO orden VALUES(1994, NULL, 21, 3) ERROR at line 1: ORA-14400: inserted partition key is beyond hisghest legal partition key Este error ocurre porque los ordenamientos a NULL son mayors a cualquier otro valor , el INSERT sera valido si se hubiera especificado el MAXVALUE en la columna ORD_MONTH en values less than, como se muestra a continuacin al momento de crear la tabla:

CREATE TABLE orden ( ord_year NUMBER(4), ord_month NUMBER(2), ord_day NUMBER(2), ord_id NUMBER(10) ) PARTITION BY RANGE (ord_year, ord_month, ord_day) ( (PARTITION P1 VALUES LESS THAN (1994,07,01) TABLESPACE data01, PARTITION P2 VALUES LESS THAN (1994,08,01) TABLESPACE data02, PARTITION P3 VALUES LESS THAN (1994,MAXVALUE,01) TABLESPACE data03); Table created.

Administracin de Bases de Datos

83

EJEMPLO 2 CREATE TABLE orden2 ( ord_date DATE, ord_id NUMBER(10), CONSTRAINT pk_orders PRIMARY KEY (ord_date, ord_id) ) PARTITION BY RANGE (ord_date) ( (PARTITION P1 VALUES LESS THAN (TO_DATE(1997.07.01,YYYY.MM.DD)) TABLESPACE data01 STORAGE(INITIAL 10M NEXT 5M PCTINCREASE 0), (PARTITION P2 VALUES LESS THAN (TO_DATE(1997.08.01,YYYY.MM.DD)) TABLESPACE data02 STORAGE(INITIAL 20M NEXT 10M PCTINCREASE 0), (PARTITION P3 VALUES LESS THAN (TO_DATE(1997.09.01,YYYY.MM.DD)) TABLESPACE data03 STORAGE(INITIAL 10M NEXT 5M PCTINCREASE 0), Table created.

Beneficios del particionamiento Las particiones pueden ser administradas independientemente. Las operaciones de backup y restore pueden hacerse por particiones individuales. Las particiones que no estn disponibles no afectan las consultas ni las operaciones DML en otras particiones que usan las mismas tablas o ndices.

Fcil administracin Una particin puede moverse de un tablespace a otro. Una particin puede ser dividida en un valor definido por el usuario. Las particiones pueden ser eliminadas, adicionadas o truncadas.

ALTER TABLE ADD PARTITION ALTER TABLE DROP PARTITION ALTER TABLE TRUNCATE PARTITION ALTER TABLE MOVE PARTITION ALTER TABLE SLIPT PARTITION ALTER TABLE EXCHANGE PARTITION Las operaciones SELECT, UPDATE, INSERT y DELETE pueden ser aplicadas a nivel particin en lugar de ser aplicadas a nivel tabla.

Mejor Performance El optimizador elimina las particiones que no necesitan ser barridas. Las particiones pueden ser barridas en paralelo. Tambin pueden hacerse actualizaciones, inserciones o borrado en paralelo. El tamao de las tablas temporales utilizadas para ordenamientos puede ser reducido. Se puede balancear la carga de las particiones a travs de dispositivos fsicos.

Conclusion Las tablas e ndices muy grandes pueden ser separadas en piezas ms pequeas las cuales son ms fciles de administrar (particiones). El particionamiento puede mejorar el performance si se aplica en forma adecuada, adems de proporcionar una mayor disponibilidad de los datos.

Administracin de Bases de Datos

84

Captulo N 10
GESTION DE USUARIOS
Vista General

Dominio de seguridad Define las selecciones que se aplican al usuario. Mecanismos de Autentificacin El acceso a la BD pueden ser autentificado por: Base de Datos Sistema Operativo Red de Trabajo Cuotas de Tablespace Controlan la cantidad de almacenamiento fsico permitido a un usuario en los tablespaces de la BD. Tablespace por Defecto Define la localizacin en la que los segmentos creados por un usuario estn almacenados, si ste no escecifica un tablespace en el momento en que se crea el segmento. Tablespace Temporal Define donde sern colocadas las extensiones por el servidor Oracle si la operacin requiera la escritura de datos clasificados en el disco. Bloqueo de cuenta Las cuentas son bloqueadas para evitar que el usuario haga anotaciones en la BD. Puede ser automtica o manualmente por el DBA. Lmites de Fuentes Son analizadas en la seccin Manejo de Perfiles Privilegios Directos Los privilegios son utilizados para controlar las acciones que un usuario pueda realizar en una BD. Privilegios del Rol Un usuario puede tener privilegios a travs de roles.

Administracin de Bases de Datos

85

Esquema De La Base De Datos


Tablas - Disparadores - Restricciones ndices Visualizaciones Secuencias Unidades almacenadas del programa Sinnimos Tipos de datos Enlace de BD

Un esquema es una coleccin nombrada de objetos tales, como tablas, visualizaciones, etc. Cuando se crea un usuario de BD, se crea tambin su esquema correspondiente con el mismo nombre. Un usuario solo puede estar asociado a un esquema del mismo nombre.

Creacion De Usuarios En La BD
Lista de Control para la Creacin de Usuarios 1. 2. 3. 4. 5. 6. Elija el nombre y un mecanismo de autentificacin. Identificar tablespaces en los que el usuario necesita almacenar objetos. Decidir las cuotas para cada tablespace. Asignar el tablespace por defecto y el temporal. Crear un usuario. Garantizar privilegios y roles al usuario.

A) Creacion De Un Nuevo Usuario: Autentificacin Del Servidor Seleccionar la clave inicial: CREATE USER peter IDENTIFIED BY my1stson DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp QUOTA 15m ON data01 PASSWORD EXPIRE; Sintaxis: CREATE USER user IDENTIFIED {BY password | EXTERNALLY [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE tablespace] [QUOTA [integer [K | M] | UNLIMITED ] ON tablespace [QUOTA [integer [K | M] | UNLIMITED ] ON tablespace] .] [PASSWORD EXPIRE] [ACCOUNT [LOCK | UNLOCK]] [PROFILE [profile | DEFAULT]] donde: user BY password EXTERNALLY es el nombre del usuario. especifica que el usuario est autentificado por la BD y necesita proporcionar clave mientras realiza la anotacin. especifica que el usuario est autentificado por el Sistema Operativo.

DEFAULT/TEMPORARY TABLESPACE Identifica el tablespace por defecto/temporal para el usuario QUOTA defiene el espacio mximo permitido para los objetos poseidos por el usuario en el tablespace tablespace (la cuota puede ser definida como Bytes integrados o Kilobytes y Megabytes. La clave UNLIMITED es utilizada para especificar que los objetos posedos por el usuario pueden utilizar tanto espacio como est disponible en el tablespace. Por defecto, ningn usuario tiene una cuota en ningn tablespace.).

Administracin de Bases de Datos

86
PASSWORD EXPIRE fuerza al usuario a volver a seleccionar una clave cuando este escribe en la BD utilizando SQL*Plus (opcin vlida solo para usuarios autentificados por la BD)

ACCOUNT LOCK/UNLOCK Puede ser utilizado para bloquear/desbloquear la cuenta del usuario explcitamente (por defecto es UNLOCK). PROFILE es utilizado para controlar el uso de los recursos y especificar el mecanismo de control de la clave que tiene que utilizar el usuario.

OEN 1. Usar el Security Manager Oracle. 2. Seleccionar Usuario->Crear. 3. Introducir la informacin del usuario en la pgina Genral de la hoja de propiedad. 4. Especificar las cuotas utilizando la pgina Cuotas. 5. Hacer clic en Crear. Seleccionar un usuario y elegir Usuario->Crear Como para crear un usuario con las mismas cuotas privilegios que un usuario existente de BD.

B) Creacion De Un Nuevo Usuario: Autentificacin Del Sistema Operativo


Utiliza OS_AUTHENT_PREFIX Ejemplo: O/S Usuario = usuario15 OS_AUTHENT_PREFIX OS_ Cadena vacia OPS$ (defecto) Usuario BD OS_USER15 USER15 OPS$USER15 (defecto) Posible Login remoto NO NO SI

Usar la clusula IDENTIFIED EXTERNALLY del comando CREATE USER para especificar que un usuario tiene que ser autentificado por el Sistema Operativo.

Nombre de Usuario para la Autentificacin del Sistema Operativo


El parmetro de inicializacin OS_AUTHENT_PREFIX es utilizado para especificar el formato de los nombres de usuario para la autentificacin del sistema operativo. Este valor se vuelve OPS$ para hacerlo compatible hacia atrs con anteriores versiones del servidor Oracle. Para seleccionar el prefijo en el valor NULL, especificar este parmetro de inicializacin como: OS_AUTHENT_PREFIX= El ejemplo en la transpariencia nos muestra como un usuario, USER15 est definido en la BD. Esto especifica que el usuario del sistema operativo user15, ser autorizado a acceder a la BD sin tener que ir a travs de ninguna validacin del servidor Oracle. As, para usar SQL*Plus en la anotacin en el sistema, el usuario UNIX, el user15, solo necesita teclear en el comando siguiente del sistema operativo: $ sqlplus /

NOTA: El uso de OS_AUTHENT_PREFIX=OPS$ ofrece la flexibilidad de tener a un usuario autentificado por el sistema operativo o por Oracle. En este caso, el DBA puede crear al usuario introduciendo un comando de la forma: CREATE USER ops$user IDENTIFIED BY password Un usuario que anota en la mquina que ejecuta el servidor Oracle, no necesita proporcionar una clave. S, si lo hace desde un cliente remoto. Seleccin de otro parmetro de inicializacin: REMOTE_OS_AUTHENT=TRUE especifica que un usuario puede ser autentificado por un sistema operativo remoto. El valor por defecto FALSE indica que un usuario puede ser autentificado solo por la mquina que ejecuta el servidor Oracle. Utilizar este parmetro con cuidado dado que existe un problema de seguridad potencial. Si hay un usuario en la BD que son autentificados por el sistema operativo, cambiando OS_AUTHENT_PREFIX se puede prevenir que estos usuarios hagan anotaciones en la BD.

Administracin de Bases de Datos

87
Creacion De Un Nuevo Usuario Directrices
Elegir una clave estndar inicialmente; utilizar la autentificacin O/S Use la palabra clave EXPIRE para forzar a los usuarios a restablecer sus claves. Asignar siempre tablespace temporales. Restringir cuotas a algunos usuarios; utilice QUOTA UNLIMITED con precaucin. Educar usuarios: Para conectar. Para cambiar la clave.

El tablespace temporal se hace SYSTEM y puede causar fragmentacin del mismo, as que es importante especificar el tablespace temporal para cada usuario. DEFAULT TABLESPACE es una funcin de conveniencia. Aunque esto se haga SYSTEM, un usuario no puede crear ningn objeto en este tablespace a menos que se explicite el espacio asigando. El usuario necesita cuota en algunos tablespaces para almacenar sus objetos. Ya que los segmentos temporales son creados y eliminados por el servidor Oracle, los usuarios no necesitan tener ninguna cuota en los tablespaces temporales. De formasimilar, un usuario no necesita tener ninguna cuota en los tablespaces asignados para segmentos rollback.

Alteracion Y Eliminacion De Usuarios De Base De Datos


Control del Bloqueo de la Cuenta y de la Clave ALTER USER peter IDENTIFIED BY hisgrandpa PASSWORD EXPIRE;

Puede utilizar el comando ALTER USER para cambiar la clave y bloqueo de cuenta. Algunas situaciones en la que esto puede ser muy til son: Para volver a seleccionar una clave cuando un usuario la olvida. Para desbloquear la cuenta de un usuario que ha sido bloqueada por el sistema. Para bloquear explcitamente una cuenta. Para cancelar manualmente una clave; esta clusula es muy til cuando se vuelven a seleccionar las claves del usuario. Sintaxis: ALTER TABLE user [ IDENTIFIED [BY password | EXTERNALLY ]] [ PASSWORD EXPIRE ] [ ACCOUNT [LOCK | UNLOCK]]; Ejemplo:

Bloqueo de Usuario ALTER USER peter ACCOUNT LOCK;

Desbloqueo de Usuario ALTER USER peter ACCOUNT UNLOCK;

Los cambios de clave, la cancelacin y los bloqueos no afectan a la sesin actual si el usuario ya se ha conectado. Ser afectivo solo para las sesiones subsecuentes. Cuando la cuenta de un usuario se bloquea y este intenta conectarse, aparece el siguiente mensaje: ERROR: ORA-2800: the account is locked Warning: You are no longer connected to Oracle.

OEM
1. 2. 3. Usar Security Manager Oracle. Expandir el nodo de Usuarios. Seleccionar el nombre de usuario.

Si se cambia el bloqueo de cuenta o la clave caducada: 4. Seleccionar Usuario->Cambiar el estado de Cuenta. 5. Elegir Dsbloquear, Bloquear o Caducada.

Administracin de Bases de Datos

88
Si se cambia la clave o el modo de autentificacin: 6. Introducir los detalles en la pgina General de la hoja de propiedad. 7. Hacer clic en Aplicar.

Cambio De Cuota Del Usuario En Tablespace


ALTER USER peter QUOTA 0 ON data01

Se puede necesitar modificar las cuotas del tablespace en las siguientes situaciones: Cuando las tablas que son propiedad del usuario tienen un crecimiento no anticipado. Cuando una aplicacin se realza y necesita tablas o ndices adicionales. Cuando los objetos son reorganizados y situados en tablespaces diferentes.

Sintaxis: Usar el siguiente comando para modificar las cuotas del tablespace o para reasignar tablespaces: ALTER USER user [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QUOTA [integer [K | M] | UNLIMITED ] ON tablespace [ QUOTA [integer [K | M] | UNLIMITED ] ON tablespace ] ] Una vez cuota es asignada, los objetos propiedad del usuario permanecen en el tablespace revocado pero no pueden ser colocados en ningn nuevo espacio. Por ejemplo, si existe una tabla que tiene 10 MB en el tablespace data01 y la cuota de este se cambia a 0, no se pueden situar nuevas extensiones para esta tabla. Ninguna opcin no cambiada permanece no cambiada.

OEM
1. 2. 3. 4. 5. Usar el Security Manager Oracle. Expandir el nodo de Usuarios. Seleccionar el nombre del usuario. Introducir los detalles en la pgina Cuotas de la hoja de propiedad. Hacer clic en Aplicar.

Consulta de quotas de usuarios en tablespaces

SELECT username, tablespace, bytes, max_bytes FROM dba_ts_quotas;

Borrado De Usuarios
DROP USER peter;

Utilice la clusula CASCADE si el esquema contiene objetos.

DROP USER peter CASCADE;

Sintaxis DROP USER user [CASCADE] Directrices: la opcin CASCADE borra todos los objetos en el esquema antes del borrado del usuario. Esto tiene que ser especificado si el esquema contiene algn objeto. Un usuario que est conectado actualmente al servidor Oracle no puede ser borrado.

Administracin de Bases de Datos

89

Monotorizacion De Informacin Respecto De Usuarios


MONOTORIZACION DE USUARIOS
DBA_USERS USERNAME USER_ID CREATED ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE DBA_TS_QUOTAS USERNAME TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS

Cuotas de Tablespace Usar la siguiente consulta para verificar las cuotas del tablespace para el usuario SCOTT: SVRMGR> 2 3 SELECT tablespace_name, blocks, max_blocks, bytes, max_bytes FROM dba_ts_quotas WHERE username = SCOTT; BLOCKS MAX_BLOCKS BYTES ------------ -------------------- ---------10 -1 20480 MAX_BYTES ------------------1

TABLESPACE_NAME -----------------------------DATA01

Un valor de 1 en MAX_BYTES o MAX_BLOCKS indica que el usuario tiene una cuota ilimitada en un tablespace.

Estado de la Cuenta del Usuario La siguiente consulta relaciona todos los usuarios, el estado de sus cuentas y tablespaces temporales: SVRMGR> SELECT username, account_status, temporary_tablespace FROM dba_users; TEMPORARY_TABLESPACE ---------------------------------------TEMP TEMP TEMP TEMP

USERNAME ACCOUNT_STATUS -------------------------------------------SYS OPEN SYSTEM OPEN DBSNMP OPEN SCOTT OPEN 4 rows selected.

Administracin de Bases de Datos

90

Captulo N 11
GESTION DE PRIVILEGIOS
Dos Tipos De Privilegios
1. 2. SYSTEM: permite a los usuarios realizar acciones particulares en la base de datos. OBJECT: permite a los usuarios acceder y manipular un objeto especfico.

Privilegios del Sistema Cada privilegio del sistema permite a un usuario realizar una operacin particular en una BD o una clase de operaciones de BD. Estas incluyen la creacin, borrado y alteracin de tablas, vistas, segmentos de rollback y procedimientos. Privilegios de Objetos Cada privilegio de objetos permite a un usuario realizar una accion particular en un objeto especifico, como un tabla, vista, secuencia, procedimiento, funcin o paquete.

Privilegios Del Sistema


Hay cerca de 80 privilegios de sistema (y el nmero continua creciendo) La palabra ANY en el nombre del privilegio indica que el usuario tiene el mismo en cualquier esquema. El comando GRANT concede un privilegio a un usuario o un grupo de ellos. El comando REVOKE elimina los privilegios. 1. Los privilegios pueden ser clasificados de la siguiente manera: Los privilegios habilitan operaciones en todo el sistema; por ejemplo, CREATE SESSION, CREATE TABLESPACE. Los privilegios que habilitan el manejo de objetos en un esquema propiedad del usuario; por ejemplo, CREATE TABLE. Los privilegios que habilitan el manejo de objetos en cualquier esquema, por ejemplo, CREATE ANY TABLE. Pueden ser controlados con los comandos DDL GRANT y REVOKE, los que aaden o revocan privilegios de sistema a usuario o a un rol (ver manejo de roles)

2.

NOTA: Los usuarios con privilegios ANY pueden acceder a las tablas del diccionario excepto los prefijos USER_ALL y cualquier vista concedida PUBLIC.

Privilegios Del Sistema: Ejemplos Categoria INDEX Ejemplos CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE

TABLE

SESSION

TABLESPACE

No hay privilegio CREATE INDEX. Los privilegios como CREATE TABLE, CREATE PROCEDURE o CREATE CLUSTER incluyen el borrado de estos objetos. CREATE TABLE incluye CREATE INDEX y los comandos ANALYZE. El usuario debe tener una cuota para el tablespace o tener UNLIMITED TABLESPACE. UNLIMITED TABLESPACE no puede ser concedido a un rol. Para truncar una tabla, es necesario el privilegio DROP ANY TABLE.

Administracin de Bases de Datos

91

Concesin De Privilegios Del Sistema


GRANT CREATE SESSION, CREATE TABLE TO user1;

GRANT CREATE SESSION TO scott WITH ADMIN OPTION;

Sintaxis: GRANT {system_priv | role} [, {system_priv | role } ] ... TO {user | role | PUBLIC} [, {user | role | PUBLIC ] [WITH ADMIN OPTION]

donde: system_priv role PUBLIC especifica el privilegio del sistema que ve a ser concedido. especfica el nombre del rol que va a ser concedido. concede el privilegio del sistema a todos los usuarios.

WHIT ADMIN OPTION permite al que recibe el privilegio a rol el poder concederlo ms adelante a otros usuarios o roles.

Directrices: OEN 1. 2. 3. 4. 5. 6. Para conceder un privilegio de sistema, tiene que haber sido concedido con WITH ADMIN. OPTION . El receptor de WITH ADMIN. OPTION puede conceder el privilegio del sistema rol. Cualquier usuario con el privilegio del sistema GRANT ANY ROLE puede conceder cualquier rol en una base de datos. El receptor de WITH ADMIN OPTION puede conceder o revocar el privilegio del sistema a o desde cualquier usuario o rol de la base de datos.

Usar Security Manager de Oracle. Seleccionar el nombre de usuario o rol para el que usted quiera conceder el privilegio. Seleccionar el Tipo de Privilegio: Privilegios del Sistema. Seleccionar el privilegio del sistema que usted quiere conceder. Opcionalmente controlar la casilla WITH ADMIN OPTION. Hacer clic en Apply.

Fichero De Password Para Autentificacin

PRIVILEGIOS SYSDBA y SYSOPER Categora Ejemplos


STARTUP

SYSOPER SHUTDOWN
ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE ALTER DATABASE BEGIN/END BACKUP RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION

SYSDBA

SYSOPER privileges WITH ADMIN OPTION CREATE DATABASE RECOVER DATABASE UNTIL

Solo los administradores deBD deberan tener la capacidad de conectarse a un BD con privilegios de administrador. La conexin como SYSDBA de un usuario le da privilegios no restringidos para realizar cualquier operacin en una BD o en los objetos dentro de la misma.

Administracin de Bases de Datos

92

Ficheros De Autentificacin De Passwords 1. 2. 3. 4. Crear el fichero de passwords. Asigna REMOTE_LOGIN_PASSWORD_FILE = EXCLUSIVE. Concede a los usuarios los privilegios SYSOPER y SYSDBA. Consulta V$PWFILE_USERS para verificar los miembros del fichero de passwords.

Despus de crear el fichero de passwords con la utilidad de passwords y de poner el parmetro de inicializacin REMOTE_LOGIN_PASSWORD_FILE en EXCLUSIVE, el admin. de la BD puede aadir usuarios al fichero de passwords concediendo los privilegios del sistema SYSOPER y SYSDBA. WITH ADMIN OPTION no puede ser utilizado para conceder estos privilegios. Solo los usuarios conectados normalemente como SYSDBA pueden conceder o revocar los privilegios del sistema SYSDBA o SYSOPER a otro usuario. Estos privilegiosno pueden ser concedidos a roles, ya que un rol no est disponible antes de que una BD se arranque.

Consulte la vista V$PWFILE_USERS para mostrar los usuarios que poseen los privilegios SYSDBA o SYSOPER. SVRMGR> SELECT * FROM v$pwfile_users; SYSOP ---------TRUE TRUE

USERNAME SYSDB -------------------------INTERNAL TRUE SYS TRUE 2 rows selected.

Visualizacion De Privilegios Del Sistema


Nivel Base de Datos
DBA_SYS_PRIVS - GRANTEE - PRIVILEGE - ADMIN OPTION

Nivel Sesin
SESSION_PRIVS - PRIVILEGE

Consultar el DBA_SYS_PRIVS para listar los privilegios del sistema concedidos a usuarios y roles: SVRMGR> SELECT * FROM dba_sys_privs;

GRANTEE ------------------ SCOTT SYS SYS SYS SYS SYS SYS SYSTEM

PRIVILEGE --------------------------------------SELECT ANY TABLE DELETE ANY TABLE EXECUTE ANY TYPE INSERT ANY TABLE SELECT ANY SEQUENCE SELECT ANY TABLE UPDATE ANY TABLE UNLIMITED TABLESPACE

ADM ------NO NO NO NO NO YES NO YES

Administracin de Bases de Datos

93

La vista SESSION_PRIVS muestra los privilegios que estn disponibles en la sesin actual para un usuario en nuestro ejemplo, para el usuario SCOTT. SVRMGR> SELECT * FROM session_privs; PRIVILEGE CREATE SESSION ALTER SESSION CREATE TABLE SELECT ANY TABLE CREATE CLUSTER CREATE SYNONYM CREATE VIEW CREATE SEQUENCE CREATE DATABASE LINK CREATE PROCEDURE CREATE TRIGGER CREATE TYPE 12 rows selected. Nota: la vista DBA_SYS_PRIVS muestra todos los privilegios del sistema concedidos a roles y usuarios nivel de la BD, mientras que SESSION_PRIVS muestra los privilegios actuales de la sesin desde privilegios concedidos y hasta los roles habilitados.

Restricciones De Privilegios Del Sistema


07_DICTIONARY_ACCESSIBILITY = TRUE Vuelve al comportamiento de Oracle7. Elimina las restricciones de los privilegios del sistema con la palabra clave ANY. Valor por defecto en TRUE.

El mecanismo de proteccin del diccionario en Oracle8 previene que usuarios no autorizados accedan a los objetos del diccionario. El acceso a los objetos del diccionario est restringido a usuarios con los privilegios del sistema SYSDBA y SYSOPER. Los privilegios del sistema que proporcionan acceso a objetos en otros esquemas no lo dan al diccionario de objetos. Por ejemplo, el privilegio SELECT ANY TABLE habilita el acceso a vistas y tablas en otros esquemas, pero no habilita a Ud. a seleccionar los objetos del diccionario. Si el parmetro est seleccionado en TRUE, que es el valor por defecto, el acceso a objetos en el esquema SYS est habilitado. Si este parmetro est seleccionado en FALSE, los privilegios del sistema que permiten acceso a objetos en otros esquemas no permiten el acceso a objetos en el esquema diccionario.

Revocacin De Privilegios Del Sistema

REVOKE CREATE TABLE FROM user1;

REVOKE CREATE SESSION FROM scott;

Sintaxis: REVOKE {system_priv | role} [, {system_priv | role } ] ... FROM {user | role | PUBLIC} [, {user | role | PUBLIC ]

Administracin de Bases de Datos

94

El comando REVOKE puede revocar solo privilegios que haya sido soncedidos directamente por el comando GRANT. La revocacin de privilegios del sistema puede tener un efecto en algunos objetos dependientes. Por ejemplo, si ha concedido SELECT ANY TABLE a un usuario y este tiene concedido cualquier procedimiento o vista que use una tabla en algn otro esquema, la revocacin del privilegio invalida los procedimientos o vistas.

Revocacin de Privilegios del Sistema Utilizando WITH ADMIN OPTION


DBA USUARIO1 SCOTT

GRANT

DBA

USUARIO1

SCOTT

REVOKE

Revocacin de Privilegios del Sistema Utilizando WITH ADMIN OPTION RESULTADO

DBA

USUARIO1

SCOTT

No hay efecto casada cuando un privilegio de sistema se revoca, incluso si ha sido concedido utilizando WITH ADMIN. OPTION. El siguiente escenario ilustra lo anterior: 1) 2) 3) 4) 5) El DBA garantiza el privilegio del sistema CREATE TABLE al USER 1 con ADMIN. OPTION. USER 1 crea una tabla. USER 1 garantiza el privilegio del sistema CREATE TABLE a SCOTT. SCOTT crea una tabla. El administrador de la BD revoca el privilegio del sistema CREATE TABLE al usuario USER 1

El resultado: 6) 7) La tabla de USER 1 continua existiendo pero el usuario no puede crear ninguna tabla nueva. SCOTT continua teniendo la tabla y el privilegio del sistema CREATE TABLE.

Si en el paso 3 anterior el USER 1 garantiza privilegios con ADMIN. OPTION a SCOTT, ste podra potencialmente revocar el privilegio al USER 1.

Administracin de Bases de Datos

95

Privilegios De Objetos
Objeto privado ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE Table View Sequence Procedure

Cada privilegio de objeto que est concedido, autoriza a realizar algunas operaciones en el objeto. La tabla anterior resume los privilegios de objetos que pueden ser concedidos en cada tipo de objeto.

Concesin De Los Privilegios De Objetos

GRANT EXECUTE ON dbms_pipe TO public;

GRANT UPDATE (ename, sal) ON emp TO user1 WITH GRANT OPTION;

Sintaxis: GRANT { object_priv [ ( column_list ) ] [, object_priv [ ( column_list ) ] ] | ALL [PRIVILEGES]} ON [schema.] object TO {user | role | PUBLIC } [, { user | role | PUBLIC } ] [ WITH GRANT OPTION]

Donde: Object_priv Column_list especifica el privilegio de objeto que va a ser concedido. especfica una tabla o columna de vista (puede ser especificado solo cuando se concede los privilegios INSERT, REFERENCES, o UPDATE) ALL ON Object concede todos los privilegios del objeto que ha sido concedido WITH GRANT OPTION identifica el objeto en el que los privilegios estn siendo garantaizado.

WITH GRANT OPTION habilita al receptor a conceder los privilegios de objetos a otros usuarios.

Directrices: Para garantizar privilegios el objeto tiene que estar en su esquema o a Ud. le tienen que haber dado el privilegio WITH GRANT OPTION. Por defecto si Ud. posee un objeto, todos los privilegios de este son automticamente obtenidos. Tenga precaucin cuando conceda privilegios de sus objetos a otros usuarios cuando concierna a la seguridad. La opcin WITH GRANT OPTION no puede ser utilizada para conceder privilegios a roles.

Administracin de Bases de Datos

96
Mostrando Privilegios De Objetos

DBA_TAB_PRIVS - GRANTEE - OWNER - TABLE_NAME - GRANTOR - PRIVILEGE - GRANTABLE

DBA_COL_PRIVS - GRANTEE - OWNER - TABLE_NAME - COLUMN_NAME - GRANTOR - PRIVILEGE - GRANTABLE

Consultar el DBA_TAB_PRIVS para listar los privilegios del objeto concedidos al usuario especificado: SVRMGR> SELECT * FROM dba_tab_privs WHERE GRANTEE=SCOTT;

GRANTEE OWNER ---------------------SCOTT SYS 1 row selected.

TABLE_NAME GRA PRIVILEGE ------------------- ----- ------------------RESUMES SYS READ

GRA ------NO

Para listar todos los privilegios especficos de columnas que han sido concedidos, use la siguiente consulta: SVRMGR> SELECT * FROM dba_col_privs

Revocacion De Privilegios De Objeto


REVOKE execute ON dbms_pipe FROM scott;

Sintaxis: REVOKE { object_priv [, object_priv ] | ALL [PRIVILEGES]} ON [schema.] object FROM {user | role | PUBLIC } [, { user | role | PUBLIC } ] [ CASCADE CONSTRAINTS ]

Donde: Object_priv ALL ON FROM especifica el privilegio de objeto que va a ser revocado. revoca todos los privilegios del objeto que han sido concedido al usuario. identifica el objeto en el que han sido revocados los privilegios. identifica los usuarios o roles a los que los privilegios de objeto son revocados.

CASCADE CONSTRAINTS Borra cualquier restriccin de integridad referencial que haya definido la revocacin usando privilegios REFERENCES o ALL.

Administracin de Bases de Datos

97
Restriccin Los concesores pueden revocar privilegios solo a usuarios a los que ellos hayan concedido privilegios.

Revocacin de Privilegios de Objetos Utilizando WITH GRANT OPTION


SCOTT USUARIO1 USUARIO2

GRANT

SCOTT

USUARIO1

USUARIO2

REVOKE

La revocacin de privilegios ser en Cascada cuando se haya dado con WITH GRANT OPTION. El siguiente escenario muestra lo anterior: 1. Al USER1 se le concede el privilegio de objeto SELECT con GRANT OPTION. 2. USER1 concede el privilegio SELECT en EMP al USER2. Resultado: 3. Ms tarde, el privilegio SELECT es revocado a USER1. Esto hace que tambin le sea revocado a USER2.

Administracin de Bases de Datos

98

Captulo N 12
GESTION DE ROLES
VISTA GENERAL

Oracle facilita el manejo sencillo y controlado de privilegios a travs de roles. Los roles, son grupos de privilegios relacionados, que se conceden a los usuarios u otros roles. Son designados para facilitar la administracin de privilegios en la base de datos. Caractersticas de los roles Se conceden y revocan a los usuarios con los mismos comandos utilizados para conceder y revocar los privilegios del sistema. Pueden ser concedidos para cualquier usuario o rol, excepto para l mismo. Pueden constar tanto de privilegios del sistema como de objeto. Pueden ser habilitados para cada usuario que tenga concedido el rol. Puede ser necesario una clave para habilitarlo. Cada nombre de rol tiene que ser nico entre los nombres existentes de usuario y de roles. No son propiedad de nadie; no estn en ningn esquema. Tienen sus descripciones almacenadas en el diccionario de datos. Beneficio de los roles Concesin reducida de privilegios. Gestin de los privilegios dinmicos. Disponibilidad selectiva de privilegios. Concesin a travs del Sistema Operativo. Revocaciones sin cascada. Rendimiento mejorado.

Concesin reducida de privilegios. En lugar de conceder el mismo grupo de privilegios a varios usuarios, puede conceder los privilegios a un ROL y este a cada uno de los usuarios. Gestin de los privilegios dinmicos. Si los privilegios asociados a un rol se modifican, todos los usuarios que tienen la concesin del rol obtienen automtica e inmediatamente los privilegios asociados. Disponibilidad selectiva de privilegios. Los roles pueden ser habilitados para conectar o desconectar temporalmente los privilegios. Tambin se puede utilizar la habilitacin de un rol para verificar que uno de ellos est garantizado para un usuario.

Administracin de Bases de Datos

99

Garantas por Medio del Sistema Operativo. Para asignar roles a usuarios de la BD, pueden utilizarse los comandos o utilidades del Sistema Operativo. Revocaciones sin cascada. Los privilegios de los objetos pueden ser revocados sin que la revocacin se produzca en cascada. Rendimiento mejorado. Al inhabilitar roles, quedan muy pocos privilegios a verificar durante la ejecucin de una sentencia. El uso de los mismos, reduce el nmero de garantas almacenadas en el diccionario de datos.

Creacin Y Modificacin De Roles

CREATE ROLE sales_clerk;

CREATE ROLE hr_clerk IDENTIFIED BY bonus;

CREATE ROLE hr_manager IDENTIFIED EXTERNALLY;

Sintaxis: CREATE ROLE role [ NOT IDENTIFIED | IDENTIFIED { BY password | EXTERNALLY } ] Donde: role NOT IDENTIFIED IDENTIFIED BY password EXTERNALLY es el nombre del rol. indica que no es necesaria verificacin cuando se habilita el rol. indica que es necesaria verificacin cuando se habilita el rol. proporciona la clave que el usuario tiene que especificar cuando habilita el rol. indica que un usuario tiene que estar autorizado por un servicio externo (como el sistema operativo o un servicio de terceras partes) antes de habilitar el rol.

OEM 1. 2. 3. 4. 5. Usar el Security Manager. Elegir Rol->Crear. Introducir el nombre del rol y seleccionar el mtodo de identificacin. Opcionalmente, GRANT los roles y privilegios en el nuevo rol haciendo clic en el tab Roles/Privilegios de Objeto (analizado en el captulo anterior). Hacer clic en Crear.

Nota: el comando CREATE ROLE IDENTIFIED GLOBALLY especfica que la verificacin del rol tiene que ser hecha a travs del Servidor de Seguridad Oracle. El Servidor de Seguridad Oracle es un producto que le habilita para de forma central iniciar roles y usuarios en un entorno Oracle distribuido. Los usuarios y roles que son definidos por el Servidor de Seguridad Oracle pueden ser utilizados en mltiples bases de datos. Estos usuarios y roles reciben el nombre de usuarios globales y roles globales. Para ms informacin ver el manual Oracle8 Server Distribted Database Systems.

Administracin de Bases de Datos

100
Uso De Roles Predefinidos
Nombre del Rol CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE SELECT_CTABLOG_ROLE Todos los privilegios del sistema WITH GRANT OPTION. Privilegios para exportar el BD. Privilegios para importar el BD. Privilegio de borrado del Diccionario de Datos. Privilegio de consultas en las tablas del Diccionario. Descripcin Se suministran estos dos roles para compatibilidad con versiones anteriores

EXECUTE_CATALOG_ROLE Privilegio de ejecucin sobre paquetes del Diccionario.

Los roles relacionados se definen automticamente por las bases de datos Oracle. Los roles Connect y Resource se proporcionan para compatibilidad con anteriores versiones de Oracle y pueden ser modificados de la misma forma que cualquier otro rol en una base de datos Oracle. Los roles EXP_FULL_DATABASE y IMP_FULL_DATABASE se proporcionan por la conveniencia en el uso de las utilidades Importacin y Exportacin. Los roles DELTE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE y SELECT_CATALOG_ROLE se proporcionan para el acceso a las vistas del diccionario de datos y paquetes. Estos roles pueden ser concedidos a los usuarios que no tiene el rol DBA, pero requieren el acceso a las vistas y tablas del diccionario de datos. Otros Roles especiales Oracle tambin crea otros roles que lo autorizan a administra la base de datos. En muchos sistemas operativos, a estos roles se les llama OSOPER y OSDBA. Estos nombres pueden ser diferentes en su sistema operativo. Otros roles son definidos por los ficheros de comandos SQL proporcionados por la BD. Por ejemplo, los roles AQ_ADMINISTRATOR_ROLE y AQ_USER_ROLE son creados por el fichero de comandos dbmsaqad.sql. Estos roles son usados con la funcin Advanced Queuing.

Modificacin De Roles

ALTER ROLE sales_clerk IDENTIFIED BY commission;

ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY;

ALTER ROLE hr_manager NOT IDENTIFIED;

Un rol solo puede cambiarse para cambiar su mtodo de autentificacin. OEM 1. 2. 3. 4. 5. Usar el Security Manager. Expandir el nodo del Rol. Seleccionar el Rol. Indicar el mtodo de identificacin. Hacer clic en Aceptar.

Administracin de Bases de Datos

101
Asignacin De Roles

GRANT sales_clerk TO scott;

GRANT hr_clerk TO hr_manager;

GRANT hr_manager TO scott WITH ADMIN OPTION;

Para conceder un rol a un usuario, utilizar el mismo comando que fue utilizado para conceder un privilegio del sistema a un usuario. Sintaxis: GRANT role [ , role ] TO {user | role | PUBLIC} [, {user | role | PUBLIC} ] [ WITH ADMIN OPTION]; Donde: role user role PUBLIC WITH ADMIN. OPTION es un rol para ser garantizado o para recibir el rol garantizado. es un rol que recibe un usuario. es un rol que recibe un rol. garantiza el rol de todos los usuarios. habilita la posibilidad para conceder el rol a otros usuarios o roles.

El usuario que crea un rol est implcitamente asignado al mismo con ADMIN. OPTION. Un usuario que no ha recibido un rol con ADMIN. OPTION, necesita el privilegio del sistema GRANT ANY ROLE para conceder y revocar roles a otros. OEM 1. 2. 3. 4. 5. 6. 7. 8. 9. Usar Security Manager Oracle. Expandir el nodo Usuario o Rol. Seleccionar el usuario o rol. Seleccionar el tab Roles/Privilegios. Seleccionar los Roles como el Tipo de Privilegio. Seleccionar el Rol que va a ser concedido. Hacer clic en la flecha hacia abajo para aadir el rol concedido en el listado. Aadir roles adicionales como sea necesario. Hacer clic en Aceptar.

Establecimiento De Roles Por Defecto

ALTER USER scott DEFAULT ROLE hr_clerk, sales_clerk;

ALTER USER scott DEFAULT ROLE ALL;

ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;

ALTER USER scott DEFAULT ROLE NONE;

Administracin de Bases de Datos

102
Un usuario puede tener muchos roles asignados. Un default role es un subgrupo que se habilita automticamente cuando el usuario se conecta. Por defecto, todos los usuarios asignados a un usuario son habilitados al ser registrado en ellos. Limitar los roles por defecto para un usuario con el comando ALTER USER.

Sintaxis: ALTER USER user DEFAULT ROLE {role [,role] | ALL [ EXCEPT role [,role]] | NONE } donde: user role ALL es el nombre del usuario al que se garantizan los roles. es el rol que forma parte del rol por defecto para el usuario. hace que todos los roles concedidos forman parte de los roles por defecto, excepto los listados en la clusula EXCEPT (este es el por defecto). EXCEPT indica que los roles siguientes no deberan ser incluidos en los roles por defecto. NONE hace que los roles concedidos al usuario no formen parte de los roles por defecto (los nicos privilegios que el usuario tiene cuando es creado son los que se le asignan directamente). OEM 1. 2. 3. 4. 5. 6. 7. 8. Security Manager Oracle. Expandir el nodo Rol. Seleccionar el usuario o rol. Seleccionar el tab Roles/Privilegios. Seleccionar Roles como el Tipo de Privilegio. Seleccionar el Rol que va a ser concedido. Hacer clic en la flecha hacia abajo para aadir el rol concedido en el listado. Hacer clic en Aceptar.

Habilitacin E Inhabilitacin De Roles


Inhabilita un rol para quitar temporalmente este a un usuario. Habilita un rol para concederlo temporalmente. El comando SET ROLE habilita e inhabilita roles. Los roles por defecto son habilitados para un usuario al conectarse. Puede ser necesaria una clave para la habilitacin de un rol.

Habilitar e inhabilitar roles para activar o desactivar temporalmente los privilegios asociados con los roles. Para habilitar un rol, primero tiene que estar concedido para el usuario. Cuando un rol est habilitado, el usuario puede utilizar los privilegios concedidos para este rol. Si un rol est inhabilitado, el usuario no puede utilizar los privilegios asociados con este rol, a menos que este privilegio est concedido directamente para el usuario o para otro rol habilitado para este usuario. Los roles se habilitan para una sesin. En la siguiente, los role activos del usuario revertirn en los roles por defecto. Especificacin de Roles que van a ser Habilitados El comando SET ROLE y el procedimiento DBMS_SESSION.SET_ROLE habilitan todos los roles incluidos en el comando e inhabilita todos los dems roles. Pueden ser habilitados desde cualquier herramienta del programa que permita comandos SQL, no obstante un rol no puede ser habilitado en un procedimiento almacenado. Ud. puede utilizar el comando ALTER USER...DEFAULT ROLE para indicar que roles sern habilitados para un usuario en el momento de su anotacin. Todos los dems roles son inhabilitados. Puede ser requerida un clave para habilitar un rol. La clave tiene que estar incluida en el comando SET ROLE para habilitar el rol. Los roles por defecto son asignados a un usuario no necesitan clave, son habilitados en el momento de la conexin, igual que un rol sin una clave.

Administracin de Bases de Datos

103

Restricciones Un rol no puede ser habilitado desde un procedimiento almacenado, dado que esta accin puede cambiar en entorno de seguridad (grupo de privilegios) que permiten que el procedimiento sea llamado e primer lugar. As, en PL/SQL, los roles pueden ser habilitados e inhabilitados en bloques annimos y procedimientos de aplicacin ( por ejemplo, procedimientos Formas Oracle), pero no en los almacenados. Si un procedimiento almacenado contiene el comando SET ROLE se generar un erros.

EJEMPLOS: Habilitacin e inhabilitacin de roles

SET ROLE sales_clerk IDENTIFIED BY commission;

SET ROLE hr_clerk

SET ROLE ALL EXCEPT sales_clerk;

SET ROLE NONE;

Sintaxis: SET ROLE { role [ IDENTIFIED BY PASSWORD ] [, role [ IDENTIFIED BY PASSWORD ] ] | ALL [ EXCEPT role [, role ] ] | NONE El comando SET ROLE desconecta cualquier otro rol garantizado al usuario. Donde: role IDENTIFIED BY password ALL EXCEPT role NONE proporciona la clave necesaria para habilitar el rol. habilita todos los roles garantizados para el usuario actual, excepto los listados en la clusula EXCEPT (no se puede utilizar esta opcin para habilitar roles con claves). no habilita estos roles, inhabilita todos los roles de la sesin actual (solo estn activos los privilegios garantizados directamente al usuario). es el nombre del rol

La opcin ALL sin la clusula EXCEPT funciona solo cuando todos los roles habilitados no tiene una clave.

Eliminacin De Roles Desde Los Usuarios

REVOKE sales_clerk FROM scott;

REVOKE hr_manager FROM PUBLIC;

Sintaxis: REVOKE role [, role] FROM {user | role | PUBLIC} [, {user | role | PUBLIC} ]

Administracin de Bases de Datos

104

Donde: role user PUBLIC

es un rol que va a ser revocado o desde el que los roles son revocados. es el usuario desde el que los privilegios del sistema o los roles son revocados. revoca el privilegio o rol desde todos los usuarios.

OEM: 1. 2. 3. 4. 5. 6. 7. 8.

Usar Security Manager Oracle. Expandir el nodo del Usuario o Rol. Seleccionar el usuario o rol. Seleccionar el tab Roles/Privilegios. Seleccionar los Roles como el Tipo de Privilegio. Baja Garantizado, seleccionar el Rol que va a ser revocado. Hacer clic en la flecha hacia arriba para eliminar el rol de la lista garantizada. Hacer clic en Aplicar.

Eliminacin De Roles

DROP ROLE hr_manager;

Cuando se elimina un rol el servidor Oracle lo quita de todos los usuarios y roles para los que ha sido concedido, eliminandolo de la BD. A Ud. le tiene que haber sido concedido el rol de ADMIN OPTION o tener el privilegio del sistema DROP ANY ROLE para eliminar el rol. OEM: 1. 2. 3. 4. 5.

Usar Security Manager Oracle. Expandir el nodo Rol. Seleccionar el rol. Seleccionar Rol->Eliminar. En la casilla de dilogo, hace clic en YES.

Directrices Para La Creacin De Roles

Administracin de Bases de Datos

105
Dado que un rol incluye los privilegios necesarios para realizar una tarea, el nombre del mismo es normalmente una tarea de trabajo. El ejemplo anterior utiliza ambas tareas de aplicacin y ttulos de trabajo, para los nombres de rol. 1. Crear un rol para cada tarea de aplicacin. El nombre de rol de aplicacin corresponde a una tarea en la misma, como la nmina. 2. Asignar los privilegios necesarios para realizar las tareas en el rol de la aplicacin. 3. Crear un rol para cada tipo de usuario. El nombre del usuario se corresponde a un ttulo de trabajo, como pay_clerk. 4. Garantizar los roles de aplicacin, no privilegios individuales a usuarios de roles. 5. Garantizar los roles de usuario y de la aplicacin a los usuarios. Si una modificacin en la aplicacin requiere nuevos privilegios para realizar la tarea de la nmina, entonces el DBA necesita solo asignar los nuevos privilegios al rol de la aplicacin, PAYROLL. Todos los usuarios que realizan normalmente esta tarea recibirn los nuevos privilegios. DIRECTRICES para el USO de CLAVES y ROLES por DEFECTO

Uso de Claves Las claves proporcionan un nivel adicional de seguridad cuando se habilita un rol. Por ejemplo, la aplicacin puede que necesite un usuario para introducir una clave cuando se habilita un rol PAY_CLERK, ya que este rol puede ser utilizado para extender cheques. Las claves permiten habilitar un rol solo a travs de una aplicacin. Esta tcnica se muestra en el el siguiente ejemplo: El DBA ha garantizado al usuario dos roles, PAY_CLERK y PAY_CLERK_RO. Al PAY_CLERK le ha sido garantizado todos los privilegios necesarios para realizar la funcin nmina. Al PAY_CLERK_RO (RO solo para lectura) le han sido concedidos los privilegios SELECT de las tablas necesarias para realizar la funcin nomina. El usuario se puede conectar a SQL*Plus para realizar preguntas pero no puede modificar ninguno de los datos, ya que el PAY_CLERK no es un rol por defecto, y el usuario no conoce la clave de PAY_CLERK. Cuando el usuario se conecta en la aplicacin nmina, habilita PAY_CLERK proporcionando la clave. Est codificacda en el programa; al usuario no se le solicita.

Visualizacin De Informacin Del Rol


Visualizacin del Rol DBA_ROLES DBA_ROLE_PRIVS ROLE_ROLE_PRIVS DBA_SYS_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS SESSION_ROLES Descripcin Todos los roles que existen en la BD. Roles concedidos a usuarios y roles. Roles que son concedidos a roles. Privilegios del sistema concedidos a usuarios y roles. Privilegios del sistema concedidos a los roles. Privilegios de tabla concedidos a los roles. Roles que el usuario tiene normalmente habilitados.

Administracin de Bases de Datos

106
Muchas de las vistas del diccionario de datos que contienen informacin de privilegios concedidos a los usuarios tambin contienen informacin de los privilegios de roles. SVRMGR> SELECT role, password_required FROM dba_roles;
ROLE ---------------------------------------------CONNECT RESOURCE DBA AQ_USER_ROLE SELECT_CATALOG_ROLE EXECUTE_CATALOG_ROLE DELETE_CATALOG_ROLE AQ_ADMINISTRATOR_ROLE RECOVERY_CATALAG_OWNER IMP_FULL_DATABASE EXP_FULL_DATABASE SNMPAGENT SALES_CLERK HR_CLERK 14 rows selected. PASSWORD ----------------NO NO NO NO NO NO NO NO NO NO NO NO YES EXTERNAL

Administracin de Bases de Datos

107

Captulo N 13
PERFILES
Descripcion Son grupos nombrados de recursos y limites de clave: Tiempo de CPU. Operaciones I/O. Tiempo de incatividad. Tiempo de conexin. Espacio de memoria (rea SQL privada solo para MTS). Sesiones concurrentes. Clave actuante y caducidad. Historia de la clave. Verificacion de complejidad de la clave. Bloqueo de la cuenta.

Perfil Default Creado automticamente por el servidor Oracle cuando se crea la BD.

Uso De Perfil
Restringe a usuarios la realizacion de algunas operaciones que requieren un uso excesivo de los recursos. Asegura la desconexion por actividad. Permite agrupar limites de recursos. Controla el uso de claves.

Creacin de un Perfil:
1) Limite del recurso Sintaxis: CREATE PROFILE name LIMIT [session_per_cpu [cpu_per_session [cpu_per_call [connect_time [idle_time [logical_reads_per_session [logical_reads_per_call [composite_limit [private_sga Donde: max_value max_bytes composite_limit cpu_per_session sessions_per_user connect_time idle_time

max_value] max_value] max_value] max_value] max_value] max_value] max_value] max_value] max_bytes];

{integer | UNLIMITED | DEFAULT} {integer [K | M] | UNLIMITED | DEFAULT} Limita el coste total del recurso para una sesin expresado en unidades de servicio. coste = cpu_session + connect_time + logical_reads_per_session + private_sga Tiempo total del cpu (centsimas de segundos). N de sesiones concurrentes por usuario. Tiempo de conexcion (minutos). tiempo de inactividad (minutos). Se calcula para el proceso servidor, no tiene en cuenta la actividad de la aplicacin.

Administracin de Bases de Datos

108
logical_reads_per_session N de bloques de datos (fsicos y lgicos). Es decir, es el nmero total de lecturas desde la memoria a disco. Es para asegurar que ninguna sentencia de I/O intensiva pueda acumular memoria y cragar a los discos. private_sga Espacio privado en la SGA (bytes) (slo aplicable en MTS y especificado en M o K)

Recurso a Nivel de Llamada cpu_per_call = tiempo de CPU * llamada (centsimas de segundos)

logical_reads_per_call = N de bloques de datos. Ejemplo CREATE PROFILE developer_prof LIMIT session_per_user 2 CPU_per_session 10000 idle_time 60 connect_time 480;

ALTER USER scott PROFILE developer_prof;

Habilitacin de los Lmites Poner el parmetro de inicializacin RESOURCE_LIMIT a TRUE ALTER SYSTEM SET resource_limit = TRUE; Nota: TRUE hablita el chequeo de lmites.

Alteracin Y Borrado De Un PERFIL

ALTER PROFILE developer_prof LIMIT session_per_user 5 CPU_per_call 3600 idle_time 30;

DROP PROFILE developer_prof [cascade] cascade revoca el perfila de los usuarios a los que est asignado.

Administracin de Bases de Datos

109
Uso del Perfil Restringe a usuarios la realizacin de algunas operaciones que requieren un uso excesivo de recursos. Asegura la desconexin de los usuarios de la base de datos cuando han dejado su sesin sin actividad durante algn tiempo. Habilita los lmites de recursos para los usuarios fcilmente. Maneja el uso de los recursos en sistemas de muchos usuarios de base de datos grandes. Controla el uso de claves. Facilita la gestin de claves. Bloqueos, desbloqueos y caducidad de cuentas con CREATE o ALTER USER. Los lmites de claves son impuestos siempre, incluso si RESOURCE_LIMIT para una instancia est seleccionado en False.

Gestin de Recursos con Perdiles Crear perfiles CREATE PROFILE para determinar los lmites de recursos y claves. Asignar perfiles con los comandos CREATE USER y ALTER USER. Refuerza los lmites de recursos con el comando ALTER SYSTEM, o bien editando el fichero de inicializacin INIT<ORACLE_SID>.ora La asignacin de perfiles no afecta a las sesiones actuales. Los perfiles slo son asignados a usuarios no a roles.

Visualizacin de los lmites de los recursos DBA_USERS - profile - username

DBA_PROFILES - profile - resource_name - resource_type (kernel) - limit

Gestin De Claves

El manejo de clave est controlado por el administrador de la BD con perfiles. Para mayor seguridad la siguiente seccin describe las prestaciones del manejo de claves disponible. Bloqueo de cuenta Habilita el bloqueo automtico de una cuenta cuando un usuario no logra entrar en un nmero determinado de intentos.

Administracin de Bases de Datos

110

Claves activas y caducadas Histrico de claves

Habilita la clave con una vida limitada, despus de la cual caduca y debe ser cambiada. controla la clave nueva para asegurar que la misma no es reutilizada durante un perodo de tiempo al nmero de cambios de clave permitido. Hace un control de conplejidad a la clave.

Verificacin de la complejidad de la clave

Creacin de un PERFIL: seleccin de claves 2) Seleccin de las claves CREATE PROFILE grace_s LIMIT failed_login_attempts 3 password_life_time 30 password_reuse_time 30 password_verify_function verify_function password_grace_time 5;

failed_login_attempts password_lock_time

N de intentos de login fallados antes del bloqueo de la cuenta. N de das que la cuenta permanecer bloqueada despus de la caducidad de la clave.

password_life_time password_grace_time password_reuse_time password_reuse_max

Duracin en das de la clave ntes que caduque. Perodo de gracia en das para cambiar la clave despus del primer logn con xito, cuando la clave ha expirado. N de das antes de que una clave puede ser reutilizada. N mximo de veces que una clave puede ser reutilizada.

password_verify_function

Funcin PL/SQL que hace el chequeo de la complejidad de la clave antes de que sta sea asignada.

Bloqueos De Cuentas
El servidor Oracle bloquea automticamente una cuenta despus de alcanzar el valor failed_login_attempts. La cuenta puede ser desdoblada automticamente despus de un tiempo especificado en password_lock_time o tiene que ser desbloqueada por el administrador con el comando ALTER USER, la cuenta puede ser bloqueada con ALTER USER pero no se desbloquea autmticamente. Clave Activa y Expiracin password_life_time selecciona el tiempo mximo de vida despus debe ser cambiada. Un perodo de gracia password_grace_time que empieza despus del primer intento de login en la BD una vez caducada. Se genera un mensaje de aviso cada vez que el usuario intenta hacer un login hasta que finalice el perodo de gracia. Se espera que el usuario cambie la clave dentro del perodo de gracia. Si la clave no se cambia, la cuenta ser bloqueada.

Historia de la Clave Verifica que el usuario no puede volver a utilizar una clave durante un perodo de tiempo determinado. Estas verificaciones pueden ser implementadas por medio de password_reuse_time (especifica que un usuario no puede volver a utilizar una clave durante un nmero de das determinado). password_reuse_max obliga al usuario definir una clave que no sea idntica a las anteriores.

Administracin de Bases de Datos

111
Funcin Clave Suministrada por el Usuario La funcin tiene que ser creada dentro del esquema SYS y debe tener la siguiente especificacin: funciton_name ( userid_parameter IN VARCHAR2(30), password_parameter IN VARCHAR2(30), old_password_parameter IN VARCHAR2(30) ) return boolean devuelve TRUE para acierto y FALSE para fallo. Si la funcin causa una EXCEPCION se devuelve un error y el comando ALTER USER o CREATE USER finaliza. Oracle proporciona una funcin de verificacion de complejidad en forma de funcin PL/SQL, llamada verify_function en el fichero de comandos utlpwdmg.sql y que tiene que ser ejecutado bajo el esquema de SYS. El cual al ser ejecutado cambia el perfil DEFAULT con el siguiente comando. ALTER PROFILE default LIMIT password_life_time 60 password_grace_time 10 password_reuse_time 1800 password_reuse_max UNLIMITED failed_login_attempts 3 password_lock_type 1/1440 password_verify_funciton verify_function;

Funcion de Verificacin de clave verify_function El nmero mnimo de caracteres debe ser 4. La clave no debe ser igual al nombre del usuario. La clave debera diferir de la anterior al menos en 3 letras.

Visualizacin De La Informacin De Claves


DBA_USERS - profile - username - account_status - lock_date - expiry_date DBA_PROFILES - profile - resource_name - resource_type (password) - limit

Administracin de Bases de Datos

112

Captulo N 14
MANEJO DE SEGMENTOS ROLLBACK

Un segmento de rollback es utlizado para salvar el valor antiguo cuando un proceso est haciendo cambios de datos en la BD. Almacena informacin del bloque, como el ID del fichero y el bloque, datafile y tambin el dato, tal como era ntes de ser moficado. La transaccin puede usar un solo segmento de rollbak para almacenar todas las grabaciones rollback. En un segmento rollbak se pueden escribir muchas transacciones concurrentes.

Rollbak de una Transaccin Cuando una transaccin hace cambios en una fila de una tabla, la imagen antigua es salvada en el segmento de rollback. Si se hace rollback a la transaccin, el valor de un segmento es escrito de nuevo en la fila, restableciendo el valor origianl. Recuperacin de Transaccin Si el instance falla cuando las transacciones estn siendo ejecutadas, el servidor Oracle necesita hacer rollback a los cambios NO validados cuando se abre de nuevo la BD. Consistencia de Lectura Cuando las transacciones estn siendo realizadas, otros usuarios de la BD NO deberan ver ningn cambio no validado hecho por estas transacciones. Los valores antiguos de los segmentos de rollback son utilizados tambin para proporcionar a los lectores una nueva imagen consistente para una sentencia dada. Tipos de Segmentos System No System o o System Privado Pblico

Es creado en el tablespace SYSTEM al mismo tiempo que es creada la BD. Este segmento slo es utilizado para Cambios hechos en objetos del tablespace SYSTEM. Una BD tiene mltiples tablespaces, necesita al menos un segmento de rollback No-System. Este segmento es creado por el administrador. Puede ser utilizado para los cambios de cualquier tablespace. Hay dos tipos: Privado: son slo obtenidos por una instance. Pblico: estos forman parte de un pool de segmentos rollback disponibles en la BD.

No System

Administracin de Bases de Datos

113
Uso De Los Segmentos Rollback Con Transacciones
Asignacin de un segmento de rollback Cuando una transaccin empieza necesita que le sea asignado un segmento rollback. Una transaccin puede utilizar un segmento especfico utilizando el siguiente comando: SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment_name; Si no se hace esta solicitud el servidor Oracle elige el segmento con menor nmero de transacciones y le asigna la transaccin.

Crecimiento de los Segmentos Rollback

El puntero del segmento rollback se mueve a la extensin siguiente cuando la actual est llena. Cuando la ltima extensin actualmente disponible esta llena, el puntero puede solo moverse al principio de la primera, si sta est libre. El puntero no puede saltarse una extensin y moverse a la segunda o a cualquier otra. Si la primera est siendo utilizada, la transaccin asignar una extensin. De forma similar si el puntero intenta moverse a una extensin y esta est activa, el segmento rollback colocar una extensin adicional. Un segmento rollback puede crecer de esta manera hasta alcanzar el nmero mximo de extensiones especificado en el parmetro MAXEXTENTS. Cuando las transacciones inician su escritura en una nueva transaccin se llama WRAP.

Contraccin De Los Segmentos Rollback

El parmetro OPTIMAL especifica el tamao en bytes al que un segmento rollback tiene que disminuir, si es posible. La especificacin optimal minimiza la prdida de espacio en un segmento rollback. Si los parmetros optimal estn especificados, un segmento rollback puede liberar espacio al finalizar las transacciones que causa el crecimiento. La siguiente select muestra la configuracin de cada segmento rollback y el valor requerido para el parmetro optimal. Select substr(segment_name,1,12) "Nombre", initial_extent "Initial", next_extent "Next", min_extents "Min_ext", rssize "Tamao Actual", hwmsize "Max. Alcanzado", optsize "Optimal", initial_extent+(next_extent*(min_extents-1)) "Min x Optimal" from dba_rollback_segs, v$rollstat where dba_rollback_segs.SEGMENT_ID = v$rollstat.usn order by 1;

Administracin de Bases de Datos

114

Nota: se recomienda que optimal >= initial + next + min_extents (como mnimo min_extents >=2)

Consistencia en la Lectura

Oracle garantiza que una sentencia ve datos consistentes. Cuando el servidor Oracle empieza la ejecucin de una sentencia SELECT determina el SCN actual y asegura que cualquier cambio no validado entes de este SCN no es procesado por la sentencia. Supongamos que realiza una consulta en el mismo momento que se estn realizando cambios, si un bloque tiene cambios que no fueron validados al inicio de la consulta, el servidor Oracle construye una imagen de lectura consistente del bloque recuperando la imagen anterior de los cambios desde el segmento de rollback y aplicando los cambios a una copia del bloque de memoria. Si Oracle no puede dar una imagen consistente recibir un error ORA-1555 SNAPSHOT TOO OLD. Cuando: la transaccin que hace el cambio ya se ha validado en la cabecera del rollback ha sido vuelta a usar , y/o la imagen anterior ha sido vuelta a usuar. Solucin: mayores MINEXTENTS, tamao de extensiones mayores, mayor optimal, no son evitados con MAXEXTENTS.

Planificacin De Segmentos Rollback


Cantidad: (nmero) OLTP - pequeos, pero muchos segmentos. - 1 RBS / 4 transacciones concurrentes BATCH Grandes, pero pocos.

Nmero de Extensiones: El nmero de bytes necesario para almacenar informacin que es necesaria en caso de rollback, depende de dos cosas: 1. 2. Tipo de transaccin que va ser realizada (insercin, actualizacin o borrado). Los datos actuales que estn siendo procesados.

Estimar el tamao del segmento de rollback, ejecutando la transaccin ms larga esperada y controlar el tamao del segmento rollback. Se recomienda la creacin de los mismos con MINEXTENTS=20 para reducir la posibilidad de crecimiento (extensin).

Administracin de Bases de Datos

115
Creacin De Segmentos Rollback
Ejemplo:

CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K OPTIMAL 4M MINEXTENTS 20 MAXEXTENTS 100 );

RESTRICCIONES Un segmento rollback puede ser especificado tanto como pblico o privado (por defecto) en el momento de la creacin y no puede ser cambiado. Minextents >= 2 para un segmento rollback. Pctincrease no puede ser especificado para un segmento rollback y est siempre en 0. Optimal, si est especificado tiene que ser al menos igual al tamao inicial del segmento rollback, que es el espacio utilizado por el nmero de extensiones definidos por minextents.

DIRECTRICES Utilizar siempre next = initial en segmentos rollback para asegurar que todas las extensiones son del mismo tamao. Seleccionar el valor optimal basado en el espacio necesitado por un porcentaje de transaccin. Evitar definir maxextents a UNLIMITED. Esto podra causar una extensin innecesaria de un segmento rollback y posiblemente de ficheros de datos debido a un error de programa. Situar siempre los segmentos rollback en un tablespace separado y exclusivo, para minimizar contencin y fragmentacin.

Poner Segmentos Rollback Operativos


Cuando se crea un segmento rollback est OFFLINE y no puede ser utilizado. Para ponerlo en modo operativo usar:

ALTER ROLLBACK SEGMENT name ONLINE;

El nmero de segmentos rollback que pueden ser puesto ONLINE para una instance, est limitado por el parmetro MAX_ROLLBACK_SEGMENT. Seleccionar este valor en uno menor que el nmero de segmentos rollback NON-SYSTEM necesitado por la instance. Un segmento est ONLINE hasta que la instance se cierra. Para asegurarse que un segmento est ONLINE, especificar el nombre del segmento en el fichero de parmetros como se muestra en el siguiente ejemplo: Rollback_segment=(rbs01)

Administracin de Bases de Datos

116
Como Obtiene una Instance los Segmentos Rollback? 1) 2) La instance obtiene todos los los segmentos rollback que se nombran en el parmetro de inicializacin ROLLBACK_SEGMENT Los parmetros TRANSACTIONS (T) y TRANSACTIONS_PER_ROLLBACK_SEGMENT (TPR) son utilizados para calcular el nmero de segmentos que necesita la instance:

3) 4)

Si el valor de N es menor o igual al nmero de segmentos rollback NON-SYSTEM que ya se han obtenido, esta instance no necesita ningn segmento rollback ms. Si el valor de N es mayor que el nmero de segmentos rollback NON-SYSTEM disponibles en la instance, obtendr segmentos rollbacks adicionales para compensar la escasez.

Si no hay suficientes segmentos rollback pblicos, la base de datos permanecer abierta y disponible para los usuarios, sin que se generen errores.

Cambio De Definiciones De Almacenamiento Del Segmento Rollback


Los parmetros de un segmento rollback que pueden ser cambiados:

ALTER ROLLBACK SEGMENT rbs01 [ STORAGE ( [NEXT [MINEXTENTS integer] [MAXEXTENTS integer|UNLIMITED] [OPTIMAL {integer [K|M] | null } ) ]; integer [K|M]]

Desasignacin de Espacio en los Segmentos Rollback


Para desasignar manualmente espacio de un segmento rollback usar: ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;

Este comando intenta reducir el tamao del segmento altamao especificado, pero se detendr si una extensin no puede ser desasignada porque est inactiva. Si no se especifica el integer (4M) Oracle intentara desasignar las extensiones hasta que el tamao del segmento rollback sea igual a optimal.

Como Poner Un Segmento Rollback OFFLINE


ALTER ROLLBACK SEGMENT name OFFLINE;

Cuando se necesita poner un segmento rollback OFFLINE: Para evitar que nuevas transacciones usen un segmento rollback Si el segmento rollback necesita ser borrado.

Si hay transacciones utilizando el segmento rollback, el estado se selecciona en pending offline, como se ve en la vista de rendimiento v$rollstat, tan pronto como todas las transacciones existentes se hayan terminado el segmento ser puesto offline.

Administracin de Bases de Datos

117

Borrado de Segmentos Rollback


DROP ROLLBACK SEGMENT name;

Un segmento rollback necesita estar offline ntes de ser borrado. Se puede necesitar borrar un segmento rollback, si ya no se necesita o se quiere volverlo a crear con otra configuracin.

Obteniendo Configuracin...
DBA_ROLLBACK_SEGS - owner especifica el tipo de segmento (SYS = privado, PUBLIC = pblico)

ESTADSTICAS DE LOS SEGMENTOS ROLLBACK Unir las vistas v$rollstat y v$rollname SELECT FROM WHERE Columnas: Extents Rsize Xacts Optsize Hwmsize Avgactive Status Curext Curblk N de extensiones en el segmento rollback. Tamao actual del segmento en bytes. N de transacciones que usan este segmento. valor optimal para este segmento. Tamao mximo en bytes hasta que ha crecido este segmento desde su inicio. Tamao actual de extensiones activas, promedio sobre el tiempo. Estado del segmento. Localizacin actual de la cabercera. La extensin y el nmero de bloque. n.name, s.extents, s.rssize, s.optsize, s.hwnsize, s.xacts, s.status v$rollname n, v$rollstat s n.usn = s.usn;

ACTIVIDAD ACTUAL DE LOS SEGMENTOS ROLLBACK Para controlar el uso del segmento rollback por las transacciones activas actuales, unir las vistas v$transaction y v$session. V$TRANSACTION Ses_addr Xidusn Ubafil Ubablk Ubasqn Ubarec Used_ublk Start_uext Start_ubablk N de bloques de rollback generados por la transaccin. Extendin del segmento rollback desde el que la transaccin inicio la escritura. N de bloque del segmento rollback desde el que la transaccin inicio la escritura. Direccin de la sesin (para unir con v$session). Segmento rollback. N utilizado por la transaccin . Usado como parte de la ID de la transaccin. Especifican la localizacin actual en el segmento rollback donde la transaccin est escribiendo.

Administracin de Bases de Datos

118
Solucin de Problemas Insuficiente espacio para las transacciones (ORA-01562) Causa: Sin espacio en el tablespace (ORA-01560) El N de extensiones en el segmento de rollback ha alcanzado MAXEXTENTS y extensiones adicionales no puedn ser asignadas (ORA-01628). Soluciones: Extender los ficheros de datos del tablespaces. Permitir AUTOEXTEND a los ficheros de datos. Aadir fichero de datos al tablespaces. Si el segmento rollback alcanz el MAXEXTENTS: Incrementar maxextents para el segmento rollback. Borra y vuelve a crear el segmento rollback con tamao de extensin mayor para evitar este problema.

Sesin Bloqueante

Cuando una extensin en un segmento rollback est llena, el servidor Orace intenta volver a usar la siguiente extensin en el anillo. Incluso si esta nueva extensin contiene una extrada activa no puede ser utilizada. En estos casos un segmento rollback asigna una extensin adicional. La transaccin NO puede saltar una extensin en el anillo y continuar escribiendo en la siguiente. Una transaccin que ha hecho solo algunos cambios, pero ha estado inactiva un perodo de tiempo grande podra ser la causa de que los segmentos rollback crezcan aunque haya muchas extensiones libres. En estas situaciones hay mucho espacio desperdiciado y puede ser necesaria la intervencin de un administrador de la BD para evitar que los segmentos rollback crezcan.

Detencin de Sesiones Bloqueantes


Consultar las vistas v$rollstat, v$session, y v$transaction para encontrar cualquier bloqueo de transacciones. SELECT FROM WHERE s.sid, s.serial#, t.start_time, t.xidusn, s.username v$session s, v$transaction t, v$rollstat r s.saddr = t.ses_addr AND t.xidusn = r.usn AND ((r.curext = t.start_uext 1) OR ((r.curext = r.extents 1) AND t.start_uext = 0));

SID 9

SERIAL# 27

START_TIME 10/30/97 21:10:41

XIDUSN USERNAME 2 SYSTEM

Controlar si la transaccin puede ser finalizada o si necesita ser eliminada y tomar las medidas necesarias.

Administracin de Bases de Datos

119
Error de Poner Tablespaces OFFLINE No se pueden poner tablespaces OFFLINE que contengan RBS activos (ORA-01546) - Consultar DBA_ROLLBACK_SEGS para encontrar cuales segmentos rollback estn en el tablespaces. - Poner todos los segmentos rollback en el tablespace offline. - Controlar v$transaction para encontrar que transacciones estn utilizando actualmente estos segmentos rollback. - Usar v$session para obtener el nombre del usuario y la informacin de la sesin. - Terminar las sesiones si es necesario. - Poner el tablespace OFFLINE.

Como ver la Actividad Actual SELECT FROM WHERE xidusn used_ublk s.username, t.xidusn, t.ubafil, t.used_ublk v$session s, V$transaction t s.addr = t.ses_addr;

Nmero de segmento de undo Nmero de bloques del segmento de rollback utilizados.

Administracin de Bases de Datos

120

Captulo N 15
MANTENIMIENTO DE LOS FICHEROS REDO LOG

Uso De Los Ficheros Redo Log


Los ficheros redo log minimizan la prdida de datos en la base de datos. Los ficheros redo log graban todos los cambios hechos a los datos en el buffer de datos, con algunas excepciones, como en el caso de escrituras directas. Los ficheros redo log son usados en situaciones como el fallo de una instance para recuperar datos validados que no han sido escritos en los ficheros de datos. Los ficheros redo log son utilizados slo para la recuperacin.

Uso De Los Ficheros Redo En Lnea

GRUPOS y MIEMBROS

Administracin de Bases de Datos

121

Grupo de Redo Log Activos


A un grupo de copias idnticas de ficheros redo log activos se le llama un grupo redo log. El proceso background LGWR escribe la misma informacin en todos los ficheros redo log activos de un grupo. Oracle necesita un mnimo de 2 grupos de fichero redo log activos para la operativa de la base de datos.

Miembros de los Redo Log Activos


Cada fichero redo log activo de un grupo se llama miembro.

Creacin De Los Ficheros Redo Log Iniciales


El conjunto de grupos redo log activos inicial y sus miembros son creados durante la creacin de la base de datos. Los siguientes parmetros limitan el nmero de fichero redo log activos: MAXLOGFILES en el comando CREATE DATABASE especifica el N mximo de grupos redo log activos (el lmite es 255). MAXLOGMEMBERS en el comando CREATE DATABASE especifica el N mximo de miembros por grupo. El parmetro de inicializacin LOG_FILES selecciona el N mximo actual de grupos que pueden ser abiertos en el momento de la ejecucin de la base de datos y no puede ser excedido.

Buffer Redo Log Y El Proceso Background LGWR


Oracle graba secuencialmente todos los cambios hechos a la BD en el buffer redo log. Las entradas redo son escritas en uno de los grupo redo log activo, llamando redo log activo actual por el proceso LGWR en las siguientes situaciones: Cuando sucede una validacin. Cuando el pool del buffer redo log se llena en un tercio. Cuando sucede un LGWR TIMEOUT (cada 3 segundos). Antes que el DBWR escriba los bloques modificados de los buffers de datos sobre los ficheros de datos.

Log Switches
LGWR escribe en los ficheros redo log secuencialmente (fig. 1), esto es, cuando el grupo redo log activo est lleno, LGWR empieza a escribir en el siguiente grupo. Cuando el ltimo fichero redo log activo est lleno, LGWR vuelve al primer grupo redo log e inicia de nuevo la escritura. Un log switches es el caso durante el que LGWR detiene la escritura en un grupo redo log activo y comienza a escribir en otro. Cada vez que sucede un log switches y LGWR inicia la escritura en un nuevo grupo, el servidor oracle asigna un nmero, conocido como nmero de secuencia log, para determinar el conjunto de entradas redo. Cuando ocurre un log switches, se inicia un suceso checkpoint.

Administracin de Bases de Datos

122

Checkpoint
Durante un checkpoint: Todos los ficheros de datos modificados en el SGA se escriben en los ficheros de datos por el proceso DBWR. El proceso background CKPT actualiza las cabeceras de todos los ficheros de datos y los ficheros de control. Los checkpoints pueden suceder para todos los ficheros de datos o slo praa ficheros especificados. Un checkpoint sucede cuando: En cada log switch. Cuando una instancia ha sido cerrada. Cuando es solicitado manualmente por el DBA. La informacin de cada checkpoint es grabada en el fichero alert si el parmetro de inicializacin log_checkpoint_to_alert est seleccionado en true. El valor por defecto es false, por lo tanto no anota checkpoints.

Archivo De Los Ficheros Redo Log

Modo NOARCHIVELOG
Los ficheros redo log activos son sobreescritos cada vez que un fichero redo log est lleno y cucede un log switch. LGWR no sobreescribir un grupo redo log hasta que se haya realizado el checkpoint de este grupo.

Administracin de Bases de Datos

123
Modo ARCHIVELOG
Tienen que ser archivados ficheros redo log llenos inactivos, ya que todos los cambios hechos en la BD son grabados en los ficheros redo log activo, el DBA puede utilizar el backup fsico y los ficheros archivados redo log para recuperar la BD sin prdida de ningn dato validado debido a cualquier tipo de fallo. Hay dos formas en que los ficheros redo log pueden ser archivados Manualmente Automticamente.

El parmetro de inicializacin log_archive_start indica si el archivado debera ser manual o automtico cuando la instancia es arrancada. True. Archivado automtico. ARCH iniciar el archivado del grupo log lleno en cada log switch. False. Por defecto. Indica que el DBA archivar los ficheros redo log llenos manualmente. Un comando del Server Manager tiene que ser ejecutado cada vez que se quiera archivar un fichero redo log activo. Todos los ficheros redo log o los especficos pueden ser archivados manualmente.

Obtencin De Informacin Sobre El Archivado


Comando del Server Manager ARCHIVE LOG LIST; V$DATABASE - NAME - LOG_MODE V$INSTANCE - ARCHIVER

Obtencin de informacin sobre grupos


Para ver el N de grupos log activos, el grupo actual y el N de secuencia: V$THREAD - GROUPS - CURRENT_GROUP# - SEQUENCE#

Obtencin de informacin sobre grupos y miembros


V$LOG - GROUP# - MEMBERS - STATUS: unused: current: active: inactive: - SEQUENCE# - BYTES V$LOGFILE - GROUP - MEMBER

que el grupo redo log no ha sido escrito nunca. el grupo redo log actual (sobre el que se est escribiendo). grupo redo log activo pero no es el grupo actual. el grupo no se necesita ms para la recuperacin de la instancia

Administracin de Bases de Datos

124

Control De Log Switches Y Checkpoint


Son sucesos que ocurren automticamente. Por ejemplo el grupo del fichero log activo no est lleno, pero los log switches pueden forzados: svrmgr> ALTER SYSTEM SWITCH LOGFILE; El DBA puede forzar manualmente un checkpoint, utilizando: svrmgr> ALTER SYSTEM CHECKPOINT;

Multiplexado y Mantenimiento de Miembros y Grupos


Para crear un nuevo grupo de ficheros redo log en lnea, utilizar: ALTER DATABASE [database] ADD LOGFILE [GROUP integer] filespec [, [GROUP integer] filespec ] ... ] ALTER DATABASE ADD LOGFILE ('log1c', 'log2c') SIZE 500K; Se especifica el nombre y lalocalizacin de los miembros en la clusula filespec. El parmetro GROUP puede ser elegido para cada grupo de fichero redo log. Si se omite Oracle genera su valor automticamente. Ejemplos probados: alter database add logfile group 3 '/oracle/mount3/oradata/ochoi/redolog/redo03.log' size 2M; alter database add logfile member '/oracle/mount1/oradata/ochoi/redolog/redo03b.log' to group 3;

Aadir Miembros Redo Log


ALTER DATABASE ADD LOGFILE MEMBER 'log2b' TO GROUP 2; ALTER DATABASE ADD LOGFILE MEMBER 'log2c' TO ('log2a', 'log2b');

ALTER DATABASE ADD LOGFILE MEMBER /disk4/log1b.rdo TO GROUP 1, /disk4/log2b.rdo TO GROUP 2;

log1a.rdo

log1b.rdo

log2a.rdo

log2b.rdo

GRUPO 1

GRUPO 2

Administracin de Bases de Datos

125
Recolocacin de ficheros Redo Log Activos
Como recolocar los ficheros redo log activos: 1. Cerrar la BD. 2. Copiar los ficheros redo log activos en la nueva posicin. 3. Montar la BD. 4. Ejecutar el comando ALTER DATABASE RENAME FILE 5. Abrir la BD

Eliminar Grupos Redo Log Activos y Miembros


Se puede borrar un grupo redo log activo con el siguiente comando: ALTER DATABASE [database] DROP LOGFILE | GROUP integer | (filename [filename]...) | [ , | GROUP ......... ] .... RESTRICCIONES: Una instancia necesita al menos dos grupos de fichero redo log activos. No puede ser borrado un grupo redo log activo. Si la BD est siendo ejecutada en el modo ARCHIVELOG y el grupo del fichero log no est archivado, no se puede borrar el grupo. Cuando un grupo redo log activo se borra, los ficheros del sistema operativo no se borran. ALTER DATABASE DROP LOGFILE GROUP 3;

Borrado de los Miembros Redo Log en lnea


ALTER DATABASE DROP LOGFILE MEMBER /disk4/log2b.rdo; log1a.rdo log1b.rdo log2a.rdo log2b.log

ALTER DATABASE DROP LOGFILE MEMBER 'log3c'; Se puede querer borrar un miembro redo log activo porque est invalid. RESTRICCIONES: El ltimo miembro vlido del grupo no puede ser eliminado. Si el grupo est activo se debe forzar un intercambio del fichero log antes de poder eliminar el miembro. Si la BD est en modo ARCHIVELOG y el grupo del fichero log al que pertence el miembro no est archivado, este miembro no puede ser eliminado. Cuando un miembro redo log activo es eliminado, el fichero del sistema no se borra.

Limpiando Los Ficheros Redo Log En Lnea


ALTER DATABASE CLEAR LOGFILE /DISK3/log2a.rdb;

Administracin de Bases de Datos

126
Si un fichero Redo Log est corrupto en todos sus miembros el ejemplo anterior reinicializa los ficheros. El uso de este comando es equivalente a eliminar y aadir un fichero Redo Log Activo. Restricciones: Puede limpiar un fichero Redo Log Activo tanto si est archivado como no. Sin embargo, cuando no est archivado, tiene que incluir la clabe unarchived.

Esto har backups no utilizables si el fichero Redo Log Activo es necesario para recuperacin. ALTER DATABASE [database] CLEAR [unarchived] LOGFILE {GROUP integer | (filename [, filename] )}

Planificacin De Los Ficheros Redo Log En Lnea


Cuando Ud. multiplexa fichero redo log activos, sita miembros de un grupo en discos diferentes. Haciendo esto, incluso si uno de los miembros no est disponible, pero otros si lo estn, la instancia no se parar. Separe ficheros log archivados y los redo los activos en diferentes discos, para reducir el conflicto LGWR y DBWR, y el riesgo de prdida entre ambos, ficheros de datos y ficheros redo log activos en caso de un fallo del medio.

Dimensionar ficheros Redo Log en Lnea


El tamao mnimo de un fichero redo log en lnea es de 50k y el mximo es especfico del sistema operativo. Los miembros de diferentes grupos pueden tener tamaos diferentes. Las situaciones siguientes pueden influenciar la configuracin de los ficheros redo log en lnea: Nmero de log switches y checkpoints Nmero y cantidad de entradas redo. Cantidad de espacio en el medio de almacenamiento.

Errores LGWR posibles No est disponible un miembro de un grupo de dos o ms. No estn disponibles todos los miembros del siguiente grupo. No estn disponibles todos los miembros del grupo actual.

Administracin de Bases de Datos

127

Ejemplo Redimensionamiento De Ficheros Redo Log Activos


Supongamos que tenemos 3 grupos con un slo miembro en /u01/BBDD/redo y que se llama redo01.dbf, redo02.dbf y redo03.dbf (los podemos llamar .dbf para no confundirse con ficheros log) y que tienen 20 MB y necesitamos que sean de 100 MB. En un horario que no haya mucha actividad en la BD (por aquello que no se est haciendo log switch cada milsima de segundo) y haya tiempo para hacer las cosas tranquilamente. 1) Mirar V$LOG cual es el que tiene el estado (STATUS9 CURRENT. Este no lo podemos tocar: SQL> SELECT * FROM v$log;
GROUP# 1 2 3 THREAD# 1 1 1 SEQUENCE# 1480 1481 1482 BYTES 20M 20M 20M MEMBERS 1 1 1 ARC NO NO NO STATUS INACTIVE INACTIVE CURRENT FIRST_CHANGE 2564078 2564362 2564886 FIRST_TIME 17/07/01 17/07/01 28/07/01

2) Miramos tambin en V$LOGFILE para comprobar situaciones de los miembros. SQL>SELECT * FROM v$logfile;
GROUP# 1 2 3 STATUS MEMBER /u01/BBDD/redo/redo01.dbf /u01/BBDD/redo/redo02.dbf /u01/BBDD/redo/redo03.dbf

3) Lo siguiente sera: ALTER DATABASE DROP LOGFILE GROUP 1; !mv /u01/BBDD/redo/redo01.dbf /u01/BBDD/redo/redo01.dbf.borrame_luego
ALTER DATABASE ADD LOGFILE GROUP 1 /u01/BBDD/redo/redo01.dbf SIZE 100M; ALTER SYSTEM SWITCH LOGFILE; // Comprueba que el CURRENT es ahora el 1 con SELECT a v$log

ALTER DATABASE DROP LOGFILE GROUP 2; !mv /u01/BBDD/redo/redo02.dbf /u01/BBDD/redo/redo02.dbf.borrame_luego


ALTER DATABASE ADD LOGFILE GROUP 2 /u01/BBDD/redo/redo02.dbf SIZE 100M; ALTER SYSTEM SWITCH LOGFILE; // Comprueba que el CURRENT es ahora el 2 con SELECT a v$log

ALTER DATABASE DROP LOGFILE GROUP 3; !mv /u01/BBDD/redo/redo03.dbf /u01/BBDD/redo/redo03.dbf.borrame_luego


ALTER DATABASE ADD LOGFILE GROUP 3 /u01/BBDD/redo/redo03.dbf SIZE 100M; ALTER SYSTEM SWITCH LOGFILE; // Comprueba que el CURRENT es ahora el 3 con SELECT a v$log

Si todo fue bien: !rm /u01/BBDD/redo/*.borrame_luego Si tienes ms de un miembro es bsicamente lo mismo (mirar la documentacin)

Ejemplos de SINTAXIS.
1) ALTER DATABASE ADD LOGFILE MEMBER //redo01b.log TO GROUP 1; ALTER DATABASE DROP LOGFILE MEMBER diskc: og3.log; ALTER DATABASE ADD LOGFILE GROUP 3 (diska: log3.log diskb: log3.log) SIZE 50K; ALTER DATABASE ADD LOGFILE GROUP 1 //log1a.rdo SIZE 150K

2)

3)

4)

Administracin de Bases de Datos

128

Captulo N 16
MANEJO DE INDICES
Clasificacin De ndices
Columna simple o concatenada. LOGICOS nico o no nico.

Particionado o no particionado FISICOS B*Tree o Bitmap (normal o clave inversa Un ndice es una estructura en rbol que permite el acceso a una fila de una tabla. Los ndices pueden ser clasificados basndose en su dieo lgico o en su implementacin fsica. - La clasificacin lgica agrupa ndices a partir de la perpectiva de la aplicacin. - Mientras que fsica se deriva de la forma en que los ndices estn almacenados.

Columna Simple o ndices Concatenados ndice de columna simple: ndice concatenado: tiene slo una columna en la clave. o ndice compuesto, se crea en mltiples columnas de una tabla.

El nmero mximo de columnas en un ndice compuesto es de 32. El tamao combinado de todas las columnas no pueden exceder aproximadamente de un tercio del tamao del bloque de datos.

ndices NICOS y NO NICOS


Un ndice nico garantiza que dos filas de una tabla no tienen valores duplicados en la columna que define el ndice. Un ndice no nico, una clave sencilla puede tener mltiples filas asociadas a l.

ndices Particionados y No Particionados


Los ndices particionados son utilizados para que las tablas grandes almacenen entradas de ndices que correspondan a un ndice en varios segmentos. La particin permite que un ndice este en varios o muchos tablespaces, disminuyendo conflictos en la bsqueda. Son usados en tablas particionadas. Pueden ser creado para cada particin de una tabla.

NDICE DE ESTRUCTURA B*TREE

Al principio del ndice, est la raz, que contiene entradas que se dirigen a la siguiente del ndice. En el nivel siguiente estn los bloque rama que a su vez estn dirigidos hacia los bloques del siguiente nivel del ndice. En el nivel ms bajo estn los nodos de hoja, que contienen las entradas de ndices, que sealan hacia las filas de las tablas.

Administracin de Bases de Datos

129

Formato de las entradas de hojas del indice


Una cabecera: almacena el nmero de columnas e informacin de bloqueo. Parejas Valor Longitud de la Columna Clave: define el tamao de una columna clave seguida por un valor de la columna. Rowid de una fila: contiene los valores de la clave.

Caractersticas de las entradas de hoja del ndice


En un ndice B*Tree de una tabla No Particionada: Los valores de clave son repetidos si hay filas mltiples que tienen el mismo valor de clave. No hay entrada de ndice que corresponda a una fila que tiene todas las columnas clave que sean null. Se utiliza el Rowid restringido para dirigir hacia las filas de la tabla, ya que todas las filas pertenecen al mismo segmento.

ndices de Clave Inversa

En contraste con un indice regular B*Tree, una clave inversa de ndice invierte los bytes de cada columna indexada (excepto el rowid) mientras que mantiene el orden de la columna. Por ejemplo, en la insercin del empleado N 7689 de la tabla, se almacena en el ndice una calve de valor 8967, cuando se introduce el N del empleado siguiente 7782, se almacena la introduccion en el ndice de 2877. En relacin a esto se propaga el trabajo de carga por los mltiples bloques de ndices.

Administracin de Bases de Datos

130
ndice Bitmap
Los ndice bitmap son ms ventajosos que los B*Tree en ciertas ocasiones: Cuando una tabla tiene millones de filas y las columnas clave tienen una cardinalidad baja (esto es, hay muy pocos valores distintos para las columna. Por ejemplo estos ndices pueden ser preferibles a los de B*Tree para las columnas de sexo y estado civil de una tabla que contenga datos del pasaporte. Otros temas, regla 1: si la cardinalidad de una columna es superior a una centsima del 1 por 100 (es decir, superior al 0,01 por 100) dicha columna NO es una candidata adecuada para un ndice de mapa de bits. Cardinalidad = N de valores nicos de la columna x 100 ; 2 x 100 = 0,0155 (candidata) N de filas contenidas 12909

Cuando las columnas utilizan frecuentemente una combinacin de mltiples condiciones WHERE que relacionan al operador OR. Cuando hay actividad de slo-lectura o pequea actualizacin en las columnas.

Estructura de un ndice Bitmap


Tambin est organizado como B*Tree, pero el nodo hoja almaena un bitmap para cada valor de clave en lugar de una lista de Rowid. Cada Bit del Bitmap se corresponde a un posible Rowid y si el Bit est relacionado, significa que la fila con el correspondiente Rowid contiene el valor clave.

Uso de un ndice Bitmap El B*Tree es utilizado para localizar los nodos de hoja que contienen los segmentos bitmap para un valor dado de la clave. El Rowid inicial y los segmentos bitmap son utilizados para localizar las filas que contienen el valor clave. Cuando se realicen cambios en la columna clave de la tabla, tienen que ser modificados los bitmap, esto significa el bloqueo de los segmentos bitmap relevantes. Dado que los bloqueos se realizan en todo el segmento bitmap, una fila que se cubre con el bitmap no puede ser actualizada por otras transacciones hasta que no finalice la primera.

Comparacion Entre ndices B*Tree E ndices Bitmap


B*Tree Preferible para columnas de valor cardinal elevado. Actualizacin de claves relativamente econmicas. Ineficiente para consultas usando predicados OR. Muy til para OLTP Bitmap Preferible para columnas de valor cardinal bajo. Actualizaciones de columnas calve muy costosas. Eficiente para consultas utilizando predicados OR. Muy til para DSS. Menor lugar comprimido) de almacenamiento (se almacena en formato

Las actualizaciones en las columnas clave de un ndice bitmap son ms caras, porque los bitmap utilizan bloqueos a nivel segmentobitmap, mientras que un ndice b*tree los bloqueos estn en entradas correspondientes a filas individuales de la tabla. Los ndices b*tree pueden ser preferibles en un entorno OLTP para indexar tablas dinmicas, mientras que los ndices bitmap pueden ser muy tiles en entornos DSS donde se utilizan consultas complejas en tablas grandes y estticas.

Administracin de Bases de Datos

131
Creacin De Indices

Creacin de ndices B*Tree CREATE INDEX scott.emp_lname_idx ON scott.employees(last_name) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx01;

Un indice puede ser creado tanto en la cuenta del usuario propietario de la tabla como en una cuenta diferente, aunque se crea generalmente en la misma cuenta de la tabla. Sintaxis Usar el siguiente comando para crear un ndice de B*Tree: CREATE [UNIQUE] INDEX [schema.] index_name ON [schema.] table_name (column_name [ASC | DESC] [column_name [ASC | DESC ] ] ) [TABLESPACE tablespace_name] [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [STORAGE CLAUSE] [LOGGING | NOLOGGING] [NOSORT] Donde: UNIQUE PCTFREE Es utilizado para especificar un indice nico (por defecto es el no nico) Es la cantidad de espacio reservado en cada bloque (en porcentaje del espacio total menos el bloque de la cabecera) en el momento de la creacin para la acomodacin de las nuevas entradas del ndice. Especifica el N de entradas de transacciones preasignadas en cada bloque (el valor por defecto y minimo es 2)

INITRANS

MAXTRANS LOGGING

Limita el N de entradas de transacciones que pueden ser colocadas en cada bloque (por defecto es 255) Especifica que la creacin y las operaciones subsiguientes en el ndice son anotadas en el fichero redo log (valor por defecto) Especifica que las filas son almacenadas en la base de datos en orden ascendente y por ello, el servidor Oracle no tiene que clasificar las filas cuando crea el indice.

NOSORT

Directices: Creacin de ndices Equilibrar las necesidades de consulta y DML. Colocarlos en tablespaces separados. Uso de tamaos de extensin uniformes: mltiples de 5 bloques o tamao MINIMUM EXTENT para tablespace. Considerar NOLOGGING para ndices grandes. Definir PCTFREE alta si los nuevos valores clave pueden estar dentro del rango actual.

Administracin de Bases de Datos

132
ndices y PCTFREE El parmetro PCTFREE trabaja de forma diferente para un ndice que para una tabla. Es utilizado slo durante la creacin del ndice, para reservar el espacio de sus entradas, que puede ser necesario sean insertadas en el mismo bloque del ndice. Las entradas en el ndice no son actualizadas. Cuando una columna clave se actualiza, se invoca un borrado y luego una insercin. Usar un bajo PCTFREE para ndices de columnas que se incrementan montonamente, como el nmero de envo en un sistema generado. En estos casos, las nuevas entradas en el ndice siempre se aaden a las entradas existentes y no es necesario insertar una nueva entre dos existentes. Un ejemplo de un ndice que necesita un alto PCTFREE, es un ndice en la columna de cdigo del cliente de una tabla de envio. En este caso es muy til especificar un valor de PCTFREE como se indica en la siguiente ecuacin. Maximo nmero de filas nmero incial de filas * 100 Nmero maximo de filas

Creacin de indices de Clave Inversa

CREATE UNIQUE INDEX scott.ord_ord_no_idx ON scott.ord(ord_no) REVERSE PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx01;

Sintaxis Usar el siguiente comando para crear un ndice de claves inversa: CREATE [UNIQUE] INDEX [schema.] index_name ON [schema.] table_name (column_name [ASC | DESC] [column_name [ASC | DESC ] ] ) [TABLESPACE tablespace_name] [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [STORAGE CLAUSE] [LOGGING | NOLOGGING] REVERSE Nota: no se puede utilizar la palabra clave NOSORT para ndice inversos de clave.

Creacin de Indices Bitmap

CREATE BITMAP INDEX scott.ord_region_id_idx ON scott.ord(region_id) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx01;

Administracin de Bases de Datos

133

Sintaxis Usar el siguiente comando para crear un ndice bitmap: CREATE BITMAP INDEX [schema.] index_name ON [schema.] table_name (column_name [ASC | DESC] [column_name [ASC | DESC ] ] ) [TABLESPACE tablespace_name] [PCTFREE integer] [INITRANS integer] Un ndice bitmap NO puede ser nico [MAXTRANS integer] [STORAGE CLAUSE] [LOGGING | NOLOGGING] [NOSORT]

CREATE_BITMAP_REA_SIZE
El parametro de inicializacin CREATE_BITMAP_REA_SIZE determina la cantidad de espacio que ser utilizada para almacenar las segmentos BITMAP en la memoria. El valor por defecto es 8 MB. Un valor mayor puede conducir a una mayor velocidad de creacin del ndice. Si la cardinalidad es muy pequea, este valor puede ser seleccionado en un valor menor. Por ejemplo si la cardinalidad es slo 2, el valor puede estar en KB en lugar de MB. Como norma general a mayor cardinalidad, se necesita ms memoria para un rendimiento ptimo.

Reorganizacion De Indices

Cambio de los Parmetros de Almacenamiento para los ndices ALTER INDEX scott.emp_lname_idx STORAGE(NEXT 400K MAXEXTENTS 100);

Algunos de los parametros de almacenamiento y los de utilizacion de bloque pueden ser modificados utilizando el comando ALTER INDEX. Sintaxis ALTER INDEX [schema.] index [ storage_clause ] [ INITRANS integer ] [ MAXTRANS integer ] Las implicaciones del cambio de los parametros de almacenamiento para un ndice son las mismas que las del cambio de los de una tabla. Un uso comn de este cambio es incrementar el MAXEXTENTS para un ndice. Los parmetros de utilizacin de un bloque pueden ser cambiados para garantizar niveles ms altos de concorrencia en un bloque de ndice.

Administracin de Bases de Datos

134

Asignacin Y Desasignacin Del Espacio Del ndice

ALTER INDEX scott.ord_regin_id_idx ALLOCATE EXTENT (SIZE 200K DATAFILE /DISK6/indx01.dbf);

ALTER INDEX scott.ord_ord_no_idx DEALLOCATE UNUSED;

Asignacin Manual de Espacio en un ndice Puede ser necesario aadir extensiones a un ndice antes de un perodo de alta actividad de insercin en una tabla. La adicin de extensiones previene la extensin dinmica de ndices y la degradacin del rendimiento resultante.

Desasignacin manual de espacio en un ndice Usar la clusula DEALLOCATE del comando ALTER INDEX para liberar espacio no utilizado sobre el HWM de un ndice. ALTER INDEX [schema.] index_name {ALLOCATE EXTENT ([SIZE integer [K | M] ) [DATAFILE filename] | DEALLOCATE UNUSED [KEEP integer [K | M] ]} Ejemplo: ALTER INDEX ord_region_id_idx ALLOCATE EXTENT (SIZE 200K DATAFILE /disk6/indx01.dbf); ALTER INDEX ord_ord_no_idx DEALLOCATE UNUSED; Nota: el espacio del indice es desasignado cuando la tabla sobre la que el indice se construye es truncada. Al truncar una tabla se trunca tambin el ndice asociado.

Reconstruccin De ndices

ALTER INDEX scott.ord_region_id_idx REBUILD TABLESPACE index02;

Nota: El indice viejo se borra despues de que se haya construido el nuevo. Durante la reconstruccin, es necesario suficiente espacio para acomodar tanto el viejo como el nuevo ndice en sus respectivos tablespaces. El ndice resultante no contiene ninguna entrada borrada. As ste ndice utiliza el espacio ms eficientemente.

Administracin de Bases de Datos

135

Situaciones de reconstruccin de ndices El existente necesita ser movido a un tablespace diferente. Un ndice contiene muchas entradas borradas. Un ndice normal existente necesita ser convertido en uno de clave inversa.

Sintaxis: ALTER INDEX [schema.] index_name REBUILD [TABLESPACE tablespace_name] [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [STORAGE CLAUSE] [LOGGING | NOLOGGING] [REVERSE | NOREVERSE] REVERSE y NOREVERSE slo puede ser especificados para ndices B*TREE.

Control De Validez Del ndice


Sintaxis: ANALYZE INDEX [schema.] index_name VALIDATE STRUCTURE; Despues de ejecutar este commando, consultar INDEX_STATS para obtener informacin del ndice, como por ejemplo: SVRMGR> SELECT blocks, pct_used, distinct_keys, lf_rows, del_lf_rows FROM index_stats; blocks --------25 pct_used . -----------11 lf_rows del_lf_rows ------------ ----------------14 0 Verificar si existe corrupcin en todos los bloques del ndice. Llenar la vista INDEX_STATS con informacin del ndice.

Reorganizar el ndice si tiene una proporcin alta de filas borradas, por ejemplo, cuando el porcentaje desde del_lf_rows a lf_rows excede del 30%.

Borrado De ndices

DROP INDEX index_name;

Se puede utilizar eliminar un ndice antes de realizar cargas masivas, la eliminacin de un ndice antes de la carga de grandes cantidades de datos y volver a crearlos despus de la misma. Mejora el rendimiento de la carga. Utiliza el espacio de ndice de la carga. Un ndice puede ser marcado como invalid cuando un fallo es una instancia durante ciertos tipos de operaciones, como carga. En este caso el ndice necesita ser borrado y vuelto a crear.

Administracin de Bases de Datos

136

Obtencin De Informacin
DBA_INDEXES DBA_IND_COLUMNS

Administracin de Bases de Datos

137

Captulo N 17
MANEJO DE SEGMENTOS TEMPORALES

Vista General

Uso de los Segmentos Temporales


Los segmentos temporales son utilizados cuando las sentencias tales como las siguientes son ejecutadas y el servidor Oracle no puede realizar la ordenacin en la memoria: SELECT ... ORDER BY CREATE INDEX SELECT DISTINCT SELECT GROUP BY SELECT UNION

La cantidad de memoria utilizada por un proceso para ordenar es determinado por el parmetro SORT_AREA_SIZE. Si el volumen de la ordenacin excede de este tamao, se necesitan varias ordenaciones, almacenndose resultados parciales en el disco. Los segmentos temporales se crean y utilizan por el servidor Oracle en el tablespace que le ha sido asignado al usuario para ordenaciones. NOTA: Ya que SORT_REA_SIZE afecta a la memoria utilizada por cada sesin, si se la aumenta, puede verse incrementar significativamente los requerimientos de memoria.

Tipos de Segmentos Temporales

Administracin de Bases de Datos

138

Los segmentos temporales pueden ser creados en un tablespace PERMANENT o en un TEMPORARY. A un usuario se le puede asignar uno de estos tipos de tablespaces para las ordenaciones.

Tablespaces Temporales Es utilizado exclusivamente por segmentos temporales y no puede tener otro tipo de segmentos. Pueden TEMPORARY utilizando el siguiente comando: CREATE TABLESPACE tablespace_name TEMPORARY DATAFILE filespec [autoextent_clause] [ , filespec [autoextent_clause]] . . . Un tablespace PERMANENT puede ser cambiado en uno TEMPORARY utilizando: ALTER TABLESPACE tablespace_name TEMPORARY; Un tablespace no puede contener ningn objeto permanente para que este comando se ejecute. Un tablespace temporal puede ser convertido en uno permanente utilizando el siguiente comando: ALTER TABLESPACE tablespace_name PERMANENT; ser creados como

Segmentos Temporales en un Tablespace Permanente


El servidor Oracle puede crear un segmento temporal en un tablespace permanente si se satisfacen las siguientes condiciones: El usuario ejecuta una sentencia que necesite espacio de ordenacin en disco. Al usuario que ejecuta la sentencia le ha sido asignado un tablespace permanente para la ordenacin.

Si se utiliza un tablespace PERMANENTE para la ordenacin, un instance puede tener ms de un segmento temporal en el tablespace. Un segmento temporal es eliminado por SMON cuando finalice la ejecucin de una sentencia y el espacio es liberado para ser utilizado por otros objetos. Si son utilizados tablespaces PERMANENTES para la ordenacin, el espacio libre del tablespace puede ser muy fragmentado. As est recomendado que este tablespace sea utilizado exclusivamente para las ordenaciones.

Segmentos Temporales en un Tablespace Temporal


Conocido como segmentos cortos. Slo un segmento por tablespace e instance. Creado cuando sucede la primera ordenacin en disco en la instance despus del arranque. Vuelto a utilizar por varias transacciones. Liberado cuando se cierra la instance.

Si son utilizados tablespaces TEMPORALES para segmentos temporales, un instance slo crea un segmento de ordenacin en este tablespace. Varias transacciones que necesitan clasificaciones en disco pueden utilizar el mismo segmento. Una extensin no puede ser compartida por mltiples transacciones.

Uso de Segmentos de Ordenacin


Un segmento de ordenacin se crea por la primera sentencia que utiliza, para la ordenacin, un tablespace TEMPORAL, despus del arranque. Un segmento de ordenacin creado en un tablespace TEMPORAL es liberado slo cuando se cierra. Esto disminuye la frecuente asignacin y desasignacin de extensiones por operaciones que necesitan ordenacin y ayudan para mejorar el rendimiento. No hay lmite para el nmero de extensiones en un segmento de ordenacin creado en un tablespace TEMPORAL.

Pool de Segmento DE Ordenacin El servidor Oracle mantiene los detalles del segmento de ordenacin en el SGA en un rea llamada Pool del Segmento de Ordenacin, y cualquier sentencia que necesita asignar espacio para ordenaciones en el tablespace, controla este pool de extenciones libres.

Administracin de Bases de Datos

139

Asignacin de Espacio en Segmentos Temporales


Gua de los Segmentos Temporales Definicin de diferentes tablespaces TEMPORALES basados en necesidades de ordenacin. Especificas DEFAULT STORAGE para estos tablespaces como se muestra: o o INITIAL = NEXT = (mltiplo de SORT_REA_SIZE) + DB_BLOCK_SIZE PCTINCREASE = 0

Crear y usar tablespaces TEMPORALES de ordenacion para mejorar la concurrencia y disminuir la asignacion y desasignacin frecuentes de espacio. Los tamaos de las extensiones utilizados por un segmento temporal son asignados por la clusula DEFAULT STORAGE especificada en el tablespace.

Especificaciones del Almacenamiento por Defecto Utilice las siguientes directrices para especificar el DEFAULT STORAGE: Definir INITIAL = NEXT. Ya que un proceso siempre escribe datos igual a SORT_AREA_SIZE en el segmento temporal, un valor bueno para el tamao de la extensin es (n * s + b)

Donde: n s b

es un entero positivo es el valor del parmetro de incializacin SORT_REA_SIZE es el valor del parmetro de incializacin DB_BLOCK_SIZE

Utilizando este valor se optimiza el uso del segmento temporal, dejando espacio suficiente para que sea almacenado en cada extensin un bloque de cabecera as como la ejecucin de mltiple datos de ordenacin. Definir un PCTINCREASE a cero para asegurar que todas las extensiones son del mismo tamao. El parmetro MAXEXTENTS afecta slo al segmento temporal si el tablespace es PERMANENTE.

Obtencin de Informacin del Segmento Temporal


Las siguientes vistas pueden ser utilizadas para obtener informacin a cerca de segmentos temporales y sus usos: DBA_SEGMENTS V$SORT_SEGMENT da el estado del pool de extensiones de ordenacin utilizado por el instance. V$SORT_USAGE muestra las ordenaciones activas actuales en el instance.

Estadsticas de Ordenacin del Segmento Consultar V$SORT_SEGMENT para controlar los tablespaces TEMPORALES que contienen segmentos de ordenacin y sus estadsticas de uso respectivas. Las columnas MAX_SORT_SIZE y MAX_SORT_BLOCKS especifican el nmero de extensiones y bloques utilizados por la mayor operacin de clasificacin que usa un segmento dado. Esta informacin puede ser muy til para dimensionar los tablespaces TEMPORALES. Unir las visualizaciones V$SESSION y V$SORT_USAGE para obtener informacin en las ordenaciones activas actuales del instance: SELECT s.username, u.USER, u.tablespace, u.contents, u.extents, u.blocks FROM v$session s, v$sort_usage u WHERE s.saddr = u.session_addr;

Administracin de Bases de Datos

140
USERNAME ---------------SYSTEM USER ------------SYS TABLESPACE -----------------------TEMP CONTENTS ----------------------TEMPORARY EXTENTS -------------1 BLOCKS ------------128

La columna USER en V$SORT_USAGE muestra siempre el usuario que est consultando esta vista y no el que realiza la ordenacin. Obtener el nombre del usuario de la vista V$SESSION. La columna CONTENTS muestra si el segmento temporal est creado en un tablespace PERMANENTE o TEMPORAL

Administracin de Bases de Datos

141

Captulo N 18
AUDITORIA

Vista General

Categora de Auditora
Auditar operaciones privilegiadas o o Auditadas siempre Encendido, apagado y conexiones SYSDBA Habilitada por el DBA No puede grabar valores de las columnas Implementada a travs de cdigo Puede grabar los valores de las columnas Utilizada para registrar los cambios a las tablas

Auditora de la Base de Datos o o

Auditora basada en valor o aplicacin o o o

Auditora de Operaciones Privilegiadas


El servidor Oracle auditar siempre las siguientes acciones de la base de datos en el sistema auditor: Arranque del instance: Se genera una grabacin de auditora que detalla el usuario del SO que arranca el instance, el terminal, la fecha y hora de inicio y si la auditora de la base de datos estaba habilitada o no. Parada del instance: Se genera una grabacin de auditora que detalla el usuario del SO que para el instance, el terminal y la fecha y hora de finalizacin. Las conexiones a la base de datos con los provilegios del administrador: Se genera una grabacin de auditora que detalla e usuario SO que conecta con la base de datos como SYSOPER o SYSDBA, para proporcionar conocimiento de los usuarios con privilegios de administrador.

Auditora de la Base de Datos


La auditora de una base de datos es la monitorizacin de acciones seleccionadas de usuarios de la base de datos. La informacin a cerca del suceso es almacenada en la marca de auditora. La marca de auditora puede ser utilizada para investigar actividades sospechadas. Por ejemplo, si un usuario no autorizado est borrando datos de tablas, el administrador de la base de datos puede decidir auditar todas las conexiones a la misma en conjuncin con los intentos no fallidos y fallidos del borrado de filas en las tablas de la base de datos. La auditora puede ser usada tambin para monitorizar y recoger datos a cerca de actividades especficas de la base de datos. Por ejemplo, el administrador puede recoger estadsticas a cerca de qu tablas han sido actualizadas, cuantos I/O lgicos se han realizado y cuantos usuarios se conectan concurrentemente a las horas punta.

Auditora Basada en Valores


La auditora de la base de datos no puede grabar los valores de las columnas. Si los cambios de las columnas de la base de datos necesitan ser marcados y los valores de las columnas necesitan ser almacenados para cada cambio, utilizar una aplicacin de auditora. Esta aplicacin puede ser hecha bien a travs del cdigo de un cliente, procedimientos almacenados o disparadores de la base de datos.

Administracin de Bases de Datos

142

Auditora Basada en Valor: Un Ejemplo

CREATE TRIGGER scott.audit._employee AFTER INSERT OR DELETE OR UPDATE ON scott.emp FOR EACH ROW BEGIN INSERT INTO scott.audit_employee VALUES ( :OLD.empno, :OLD.name , , :NEW.empno, :NEW.name , , USER, SYSDATE); END;

Valores Basados en Auditora Utilizando Disparadores: Ejemplo En el ejemplo anterior se muestra un fichero de comandos que puede ser utilizado para crear un disparador para el valor basado en la auditora. Este disparador almacena los valores de columna de columna nuevos y antiguos, el nombre del usuario que hace el cambio y la hora en que los cambios han sido hechos en la tabla de empleados. La auditora de la base de datos es una tarea del administrador, y por ello, es el foco principal de esta leccin.

Uso de la Auditora de la Base de Datos

El administrador de la base de datos requiere un propsito claramente definido para la auditora. Sino, la cantidad de informacin de auditora generada puede hacer que crezca con informacin insignificante y de forma incontrolada la marca de la auditora.

Administracin de Bases de Datos

143

Habilitar la Auditora de la Base de Datos


Una vez que decida auditar, seleccione el parmetro de inicializacin AUDIT_TRAIL para habilitar la auditora del instance. Este parmetro indica si la marca de auditora est escrita en una tabla de la base de datos o en la marca de auditora del SO.

Especificar las Opciones de Auditoria A continuacin, Ud seleccciona las opciones especificadas de auditora utilizando el comando AUDIT. Con este comando, indica que comandos, usuarios, objetos o provilegios auditar. Tambin puede indicar si debera ser generada una grabacion de auditora para cada suceso o una para cada sesin. Si una opcin de auditora no es necesaria, puede desconectarla con el comando NOAUDIT.

Ejecucin de Sentencias Cuando los usuarios ejecutan las sentencias PL/SQL y SQL, el proceso del servidor examina las opciones de auditora para determinar si la sentencia que est siendo ejecutada debera generar una grabacion de auditora. Las sentencias SQL dentro de las unidades del programa PL/SQL se auditan individualmente, como sea necesario, cuando la unidad del programa es ejecutado. Dado que las visualizaciones y procedimientos pueden referirse a otros objetos de base de datos, pueden ser generadas varias grabaciones de auditora como resultado de ejecutar una sentencia sencilla.

Generacion de Datos de Auditora


La generacion e insercin de una grabacion de marca de auditora depende de una transaccin de usuario; por ello, si se hace rollback a una transaccin de usuario, la grabacion de la marca de auditora permanece intacta. Ya que la marca de auditora es generada durante la fase de ejecucin, un error de sintaxis, que sucede durante la fase de anlisis, hara que no se genere la grabacin de la marca de auditora.

Revision de Informacin de Auditora


Examinar la informacin generada durante la auditora seleccionando en las visualizaciones de la marca de auditora del diccionario de datos o usando una utilidad del sistema operativo para visualizar la marca de auditora del sistema operativo. Esta informacin es utilizada para investigar actividades sospechosas y para monitorizar la actividad de la base de datos.

El administrador de la Base de datos seleccciona el parametro de inicializacin AUDIT_TRAIL para habilitar la auditora en el instance.

Administracin de Bases de Datos

144
Sintaxis AUDIT_TRIAL = value

where

value DB

puede ser: habilita la auditora y dirige todas las grabaciones de la misma a la marca de auditora de la base de datos (sys.aud$) habilita la auditora y dirige todas las grabaciones a la marca de auditora del sistema operativo (se est permitido en el sistema operativo) inabilita la auditora (valor por defecto)

OS

NONE

Las grabaciones de auditora no sern escritas en la marca de auditora a menos que el DBA haya seleccionado el parmetro AUDIT_TRAIL en DB u OS. Aunque las sentencias SQL AUDIT y NOAUDIT pueden ser utilizadas en cualquier momento, las grabaciones slo sern escritas en la marca de auditora si el DBA ha seleccionado el parmetro AUDIT_TRAIL en el fichero de inicializacin. Nota: AUDIT_TRAIL puede estar seleccionado en TRUE (equivalente a BDA) o FALSE (equivalente a NONE)

UNIX: Marca de Auditora del Sistema Operativo En la mayor parte de los sistemas UNIX no se puede realizar la escritura de la informacin de auditora en la marca de misma del sistema operativo. En estos sistemas operativos, la seleccin de AUDIT_TRAIL = OS genera ficheros de texto en el directorio especificado por el parmetro de incializacion, AUDIT_FILE_DEST. Este parmetro se selecciona por defecto en $ORACLE_HOME/rdbms/audit..

WINDOWS NT: Marca de Auditora del Sistema Operativo Windows NT permite a la marca de auditora del sistema operativo registrar la informacin de auditora de Oracle. Estas instrucciones pueden volverse a ver utilizando el Visualizador de Sucesos.

Opciones de Habilitacin de Auditora

Sentencia de auditora AUDIT user;

Privilegio de auditora AUDIT select any table BY scott BY ACCESS;

Esquema del objeto auditora AUDIT LOCK ON scott.emp BY ACCESS WHENEVER SUCCESSFUL;

Administracin de Bases de Datos

145
Sucesos Auditados a Demanda Ud. especfica las opciones de auditora utilizando el comando AUDIT. Estas grabaciones de auditora no se generan nunca por las sesiones establecidas por el usuario SYS o por conexiones como INTERNAL. Las conexiones de estos usuarios evitan ciertas funciones internas de Oracle para habilitar las operaciones administrativas, y como el inicio de la base de datos, desconexin y recuperacin.

Auditora de Sentencia
Ud. puede auditar utilizando un tipo de sentencia SQL o para un tipo de objeto. El ejemplo de la sentencia de autoria, audita todas las sentencias CREATE, ALTER y DROP USER para todos los usuarios. Las opciones sentencia de auditora son amplias, auditando el uso de diversos tipos de acciones relacionadas por opcin. Por ejemplo, AUDIT TABLE seala varias sentencias DDL sin tener en cuenta de la tabla de la que han salido. Ud. puede seleccionar la sentencia de auditora para auditar a los usuarios seleccionados o cada usuario en la base de datos.

Auditora de Privilegios
La auditora de privilegios audita el uso de los privilegios del sistema. En el ejemplo, cuando SCOTT utiliza el privilegio ANY TABLE, se genera una entrada de auditora; este se genera slo si SCOTT consulta las tablas que pertenecen a otros usuarios, para los que no ha recibido el privilegio SELECT. Cuando se audita, se verifica primero los privilegios del propietario de usuario SELECT ANY TABLE est siendo auditado, y lo selecciona de una tabla que le pertenece, el privilegio SELECT ANY TABLE no generar ninguna grabacin de auditora, dado que el usuario puede utilizar SELECT de la tabla sirvindose de su privilegio como propietario.

Auditoria de Objetos en un Esquema


Se audita las sentencias realizadas en un esquema de objeto especfico. En el ejemplo, se genera una entrada en la marca de auditora cuando un usuario ejecuta de forma satisfactoria el comando LOCK en el objeto SCOTT.EMP.

Sintaxis Usar el comando siguiente para habilitar las opciones de auditora: Privilegio o Sentencia de Auditora AUDIT { statement | system_priv } [, { statement | system_priv } ] . . . [ BY user [ , user ] . . . ] [ BY { SESSION | ACCESS } ] [ WHENEVER [NOT] SUCCESSFUL ]

Objeto de Auditora AUDIT { statement [, statement ] . . . ON { [schema. ] object | DEFAULT } [ BY { SESSION | ACCESS } ] [ WHENEVER [NOT] SUCCESSFUL ]

where : statement system_priv schema.schema-object DEFAULT especifica el tipo de sentencia SQL o el esquema objeto para la auditoria. especifica el privilegio del sistema para la auditora. identifica el objeto elegido para la auditora. selecciona las opciones del objeto especificado como las por defecto para los objetos que se creen despus. indica auditar slo a los usuarios relaciondos en la lista (si esta clusula se omite, se auditarn todas las actividades de los usuarios)

user

Administracin de Bases de Datos

146
BY SESSION hace que Oracle inserte slo una grabacin por objeto de la bsae de datos en la marca de auditora para cada sesin, sintener en cuenta el nmero de sentencias SQL del mismo tipo que estn sometidas (este es por defecto, excepto para DDL) hace que Oracle inserte una grabacion en la marca de auditoria cada vez que una sentencia auditada est sometida (para sentencias de Datos de Definicin de Lenguaje DDL, Oracle siempre audita por acceso. especfica que la auditora no se realizar slo cuando finaliza satisfactoriamente las sentencias SQL (por defecto, es ambas)

BY ACCESS

WHENEVER

Nota:

Dado que las grabaciones son generadas durante la fase de ejecucin, descomposicin de errores, como TABLE R VIEW DOES NOT EXIST, no puede ser cogida utiliando la clusula WHENEVER UNSECCESSFUL. Las opciones de sentencia y privilegio especificadas por el comando AUDIT se aplican slo a seciones siguientes, no a la sesin actual. Por el contrario, los cambios al esquema del objeto y opciones de auditora son efectivas para las sesiones actuales.

Auditora de Objetos del Esquema


La auditora de objetos de un esquema audita selectivamente las senetencias ejecutadas en objetos especificados. Puede ser utilizado la abreviatura ALL como una opcin de auditora para las opciones aplicables para el tipo de objeto. Ud. puede auditar sentencias que referencien a tablas, vistas, secuencias, procedimientos y funciones alamacenadas, paquetes, snapshots, bibliotecas y directorios. Los procecidmientos en los paquetes no pueden ser auditados individualmente. La tabla muestra las opciones de auditora disponibles por tipo de objeto. Las sentencias que referencian a los clusters, los enlaces de la base de datos, ndices o sinnimos no son auditados directamente. No obstante, Ud. puede auditar el acceso a estos objetos indirectamente, auditando las operaciones que afectan a la tabla base. Ya que estas vistas y procedimientos pueden referirse a objetos de otras bases de datos, se pueden generar varias grabaciones de auditora como resultado del uso de estos objetos. Las opciones de auditora del esquema de objetos son siempre seleccionadas para todos los usuarios de la base de datos. Estas opciones no se pueden seleccionar para una lista especfica de usuarios. El objeto de Ud. elige para auditar tiene que estar en su propio esquema o Ud. tiene que tener privilegio del sistema AUDIT ANY.

Opcin DEFAULT de Auditora de Objetos de un Esquema


Puede utilizar la opcin DEFAULT del comando AUDIT para especificar las opciones de auditora para un esquema de objetos que todava no han sido creados. Una vez que Ud. ha establecido estas opciones de auditora por defecto, cualquier objeto esquema creado posteriormente se audita automticamente con estas opciones. Observe que las opciones de auditora por defecto de una vista son siempre la unin de las opciones de auditora para las tablas bsae de la visualizacin. Si Ud. cambia las opciones de auditora por defecto, permanecen las opciones del esquema creado previamente. Slo puede cambiar las opciones de un esquema existente, especificando el objeto en la clusula ON del comando AUDIT. El privilegio AUDI SYSTEM es necesario para seleccionar las opciones de auditora DEFAULT.

Visualizacin de Opciones de Auditora Visualizacin de Datos Dicc. ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_OBJ_AUDIT_OPTS Descripcin Opciones de auditora por defecto Opciones de auditora de sentencias Opciones de auditora de privilegios Opciones de auditora de objetos de esquema

Las vistas del diccionario de datos relaciondas, contienen la informacin de las opciones de auditora. Estas vistas son consultadas por el administraor de la base de datos para determinar que est siendo auditado. Por ejemplo, la siguiente consulta muestra las opciones de auditora de privilegios que estn seleccionados:

Administracin de Bases de Datos

147
SVRMGR> SELECT * FROM dba_priv_audit._opts; USER_NAME ------------------SCOTT SYSTEM SCOTT SYSTEM SCOTT GRANT 6 rows selected. PRIVILEGE ------------------------------------CREATE TABLE ALTER ANY TABLE ALTER ANY TABLE ALTER ANY PROCEDURE ALTER ANY PROCEDURE ANY PRIVILEGE SUCCESS -----------------BY ACCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS BY ACCESS FAILURE --------------------BY ACCESS NOT SET NOT SET NOT SET NOT SET BY ACCESS

Opciones de Inahilitacin de Auditora

NOAUDIT user WHENEVER SUCCESSFUL;

NOAUDIT create table BY scott;

NOAUDIT LOCK ON emp;

Sintaxis Usar la sentencia NOAUDIT para detener la auditoria elegida por el commando AUDIT. NOAUDIT { statement | system_priv } [, { statement | system_priv } ] . . . [ BY user [ , user ] . . . ] [ WHENEVER [NOT] SUCCESSFUL ] NOAUDIT { statement [, statement ] . . . ON { [schema. ] object | DEFAULT } [ WHENEVER [NOT] SUCCESSFUL ] Nota: Una sentencia NOAUDIT invierte el efecto de otra AUDIT previa. Observe que la sentencia NOAUDIT tiene que tener la misma sintaxis de la AUDIT previa ya que slo se invierte los efectos de esta sentencia en particular. As, si una sentencia AUDIT (sentencia A) habilita la auditora para un usuario especfico, y una segunda sentencia (sentencia B) habilita la auditora para todos los usuarios, una sentencia NOAUDIT, para inhabilitar la auditora de todos los usuarios, invierte la sentencia B pero permite que la sentencia A siga estando operativa, auditando al usuario en ella especificado.

Administracin de Bases de Datos

148
Visualizacin de los Resultados de Auditora

La Traza de Auditora Almacena las grabaciones generadas por las auditorias de sentencia, privilegio y objetos Las grabaciones de la auditora son almacenadas en la tabla del diccionario de datos SYS.AUD$ o en la traza de auditora del S.O. Cada grabacin en la traza de auditora incluye: o El usuario que ejecut la senencia. o El comando utilizado (cdigo de accin) o Cualquier privilegio referenciados en la sentencia. o La fecha y hora en que fue utiliada la sentencia.

La marca de auditora almacena las grabaciones generadas por la auditora de la sentencia, privilegio y objeto esquema. El DBA consulta una de las vistas del diccionario de datos asociada con la marca de auditora para examinar la informacin generada durante la auditora. Esta informacin es utilizada para investigar actividades sospechosas o la de monitorizar la BD.

Localizacin de la Marca de Auditora


Las grabaciones de auditora pueden ser almacenadas en la tabla del diccionario de datos, llamada marce de auditora de la base de datos, o en una marca de auditora del sistema operativo. La marca de auditora de la base de datos es la tabla del diccionario de datos SYS.AUD$. Se proporcionan varias vistas predefinidas para ayudarle a utilizar la informacin de esta tabla.

Contenido de la Marca de Auditora Cada grabacin en la marca de auditora incluye: El nombre del usuario El identificador de la sesin El identificador del terminal El nombre del esquema objeto accedido La operacin realizada o que se ha intentado (cdigo de accin) El cdigo de finalizacin de la operacin La fecha y hora de realizacin Los privilegios del sistema utiliados

Visualizacin de los Resultados de la Auditora

Objeto DBA_AUDIT_TRAIL DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_UDIT_SESSION DBA_AUDIT_STATEMENT

Descripcin Todas la entradas de auditora Grabaciones de AUDIT EXISTS / NOT EXISTS Grabaciones relatives a los objetos del esquema Todas la entradas de conexion y desconexin Grabaciones de Audit de sentencias

El siguiente ejemplo muestra las grabaciones de auditora generadas cuando son ejecutadas unas series de sentencias.

Administracin de Bases de Datos

149
SVRMGR > SELECT username, obj_name, actino_name, priv_used 2 > FROM sys.dba_audit_object 3 > WHERE owner = SCOTT AND obj_name = EMP; USERNAME ------------------SCOTT ADANS SYSTEM 3 rows selected. Estos resultados se obteinen solo cuando suceden ciertos sucesos en la base de datos. OBJ_NAME -------------------------EMP EMP EMP ACTION_NAME -------------------------SESSION REC SESSION REC SESSION REC PRIV_USED -------------------------------

DELETE ANY TABLE

Directrices para la Auditora

Directrices de la Auditora Enfoque de la auditora o Objeto de la auditora, donde sea posible o Slo usuario especficos o Por sesin o Con xito / siin xito Mantenimiento de la traza de auditora o Monitorizar el crecimiento de la traza de la auditora. o Proteger la traza de la auditora de accesos no autorizados. o Limpiar los ficeros S.O. de auditora.

Enfoque de la Auditora
Restringir la auditora identificando primero los requerimientos para la misma y seleccionando sus opciones mnimas que abastecern a requerimientos. Tiene que ser utilizada la auditora del objeto, cuando se posible, para reducir el nmero de entradas generadas. Si es necesario utilizar la auditora de sentencia o privilegio, la siguiente configuracin puede minimizar la generacin de auditora: Especificando los usuarios que se van a auditar. Auditar por sesin, no por acceso. Auditar bien los acietos o los fallos, no ambos.

Administracin de Bases de Datos

150
Mover la Marca de Auditora fuera del Tablespace del Sistema
Al tiempo que nuevas grabaciones se insertan en la marca de auditora de la base de datos, la tabla AUD$ puede crecer sin lmite. Aunque no debera eliminar la tabla AUD$, puede borrarla o truncarla de la marca ya que las filas estn slo para informacin y no son necesarias para la ejecucin de Oracle. Dado que la tabla AUD$ crece y despus empequeece, debera ser almacenada fuera del tablespaces del sistema. Para mover AUD$ al tablespace AUDIT_TAB: 1. 2. Asegrese de que la auditora este actualmente inhabilitada. CREATE TABLE aud$_Temp. TABLESPACE AUDIT_TAB AS SELECT * FROM AUD$ WHERE 1 = 2; DROP TABLE AUD$; RENAME aud$_temp TO aud$ CREATE INDEX I_aud1 ON aud$(sessionid, ses$tid) TABLESPACE AUDIT_IDX; GRANT DELETE ON aud$ TO DELETE_CATALOG_ROLE; Habilitar la auditoria del instance.

3. 4. 5. 6. 7.

Para proteger la tabla de auditora de borrados no autorizados slo el DBA debera tener el rol DELETE_CATALOG_ROLE.

Administracin de Bases de Datos

151

Captulo N 19
CARGA DE DATOS
Objetivos

Carga de datos utilizando la insercin carga directa Cargar datos en las tablas Oracle utilizando el SQL*Loader convencional y las vas de acceso directas.

Vista General

Hay varios mtodos disponibles para la carga de datos en tablas de la bse de datos Oracle. Los que sern analizados a continuacin son: Insercin de carga directa. SQL*Loader

Insercin de carga directa


Puede ser utilizado para copiar datos de una tabla a otra dentro de la misma base de datos. Acelera la operacin de insercin, obviando el buffer y escribiendo los datos directamente en los ficheros de datos.

SQL*Loader
Es una utilidad usada para la carga de datos de ficheros externos en tablas Oracle. Proporciona un medio de migracin desde otros sistemas a Oracle.

Administracin de Bases de Datos

152
Carga de Datos Utilizando la Insercin de Carga Directa

Sintaxis La insercin de carga directa puede ser invocada utilizando la indicacin APPEND como se muestra en el comando siguiente: INSERT / * + APPEND * / INTO [ schema. ] table [ [NO] LOGGING ] sub-query; where: schema table sub-query

es el propietario de la tabla es el nombre de la tabla es la subconsulta utilizada para seleccionar las columnas y filas requeridas para la insercin.

Las inserciones de carga directa se pueden realizar slo cuando se utiliza el comando INSERT INTO SELECT. Esta opcin no se puede realizar cuando se utiliza el comando INSERT INTO VALUES. Ambas inserciones de carga directa pueden ser utilizadas en tablas no particionadas como en las particionadas. Esta operacin mantiena los ndices y tambin impone todas las restricciones habilitadas. Tambin habilita a otros usuarios para, concurrentemente, modificar otras filas de la tabla.

Modo Logging
Cuando se inserta utilizando la opcin LOGGING, que es la por defecto, la operacin genera entradas de redo, haciendo posible a recuperacin completa en caso de fallos. Si se utiliza la opcin NOLOGGING, los cambios de los datos no se graban en el buffer redo log. Alguna anotacin mnima continua producindose, para operaciones como la colocacin de una extensin. El modo NOLOGGING es utilizado si este ha sido seleccionado para la tabla. Si se van a producir varias modificaciones en los datos en lnea, podra ser aconsejable seleccionar el atributo NOLOGGING antes de realizar la carga, volvindolo a seleccionar en LOGGING una vez la carga se haya finalizado.

Otras consideraciones Las inserciones de carga directa permiten a otras trnsacciones hacer cambios en la tabla de forma concurrente. Todos los datos insertados utilizando este mtodo son cargados por encima de la high water mark. Si la tabla contiene muchos bloques donde se han borrado filas, el espacio puede desperdiciarse y las exploraciones totales a las tablas pueden ser relentizadas.

Administracin de Bases de Datos

153

Las inserciones de carga directa pueden ser hechas en paralelo utilizando uno de los siguientes mtodos: Uso de una indicacin PARALLEL en la sentencia INSERT como en el ejemplo. Creacin de la tabla o su alteracin para especificar la clusula PARALLEL.

Cuando se realizan las inserciones de carga directa, el servidor Oracle utiliza varios procesos para los cambios de datos en las tabla, conocidos como consultas paralelas esclavas. Los segmentos temporales son colocados para almacenar los datos insertados por cada proceso eslcavo. Cuando una transaccin se realiza, las extensiones de estos segmentos individuales se hacen parte en la que las grabaciones son insertadas. Nota:

El comando LATER SESSION ENABLE PARALLEL DML tiene que ser ejecutado al inicio de la transaccin. Un objeto que es modificado utilizando la insercin de carga directa paralela no puede ser requerido o modificado de nuevo dentro de la misma transaccin. Para un anlisis detallado de las inserciones de carga directa paralela, ver el capitulo Ejecucin Paralela en Oracle8 Server Reference manual.

Administracin de Bases de Datos

154

Carga de Datos Utilizando SQL*Loader

SQL*Loader carga datos desde ficheros externos en tablas de una base de datos Oracle.

Funciones SQL*Loader
SQL*Loader realiza las siguientes funciones: Pueden ser utilizados uno o ms ficheros de entrada. Pueden ser combinadas varias grabaciones de entrada en una grabacin lgica para carga. Los campos de entrada pueden tener una amplitud fija o variable. Los datos de entrada pueden estar en cualquier formato caracteres, binario, decimal empaquetado, fecha y con zona decimal. Los datos pueden ser cargados desde diferentes tipos de medios como discos, cinta o mangeras con nombre. Los datos pueden ser cargados en varias tablas a la vez. Las opciones estn disponibles tanto para sustituir como para aadir datos existentes en las tablas. Las funciones SQL pueden ser aplicadas en los datos de entrada antes de que se almacene la fila en la base de datos. Los valores de la columna pueden ser auto-generados basndose en las reglsa. Por ejemplo, un valor secuencial de clave puede ser generado y almacenado en una columna. Los datos pueden ser cargados directamente dentro de la tabla, pasando por el buffer de la base de datos.

Administracin de Bases de Datos

155
Ficheros Utilizados por SQL*Loader
SQL*Loader utiliza los siguientes ficheros: Control file: especfica el formato de entrada, las tablas de salida y condiciones opcionales que pueden ser utilizadas para cargar slo parte de las grabaciones encontradas en los ficheros de datos de entrada. Datal file: contienen los datos en el formato definido en el fichero de control. Parameter file: es un fichero opcional que puede ser utilizado para definir los parmetros de la lnea del comando para la carga. Bad file: es utilzado por la utilidad para escribir las grabaciones que son rehusadas durante la carga (esto puede suceder durante la validacin de una grabacin de entrada por la utilidad o durante la insercin de la grabacin por el servidor Oracle). Log file: se crea por el SQL*Loader y contiene una grabacin d la carga. Discard file: es un fichero que puede ser creado, si es necesario, para almacenar todas las grabaciones que no cumplieran el criterio de seleccin.

Cargas Convencionales y Directas


SQL*Loader proporciona dos mtodos para la carga de datos: Va de acceso convencional Va de acceso directa

Carga por Va de Acceso Convencional


La carga por va de acceso convencional construye una disposicin de filas que se insertan y utiliza la sentencia SQL INSERT para cargar los datos. Mientras la va convencional carga, se descomponen las grabaciones de entrada, basndose en el campo de las especificaciones, y una disposicin de grabaciones se construye y es insertado en la tabla especificada en el fichero de control. Las grabaciones que no conforman con las especificaciones de los campos son rechazadas y las grabaciones que no satisfacen los criterios de seleccin son descartados. Las cargar por va de acceso convencional pueden ser utilizadas para cargar datos tanto en las tablas agrupadas como en las que no lo estn. La generacin redo log es controlada por el atributo logging de la tabla que est siendo cargada.

Carga por Va de Acceso Directo


Esta va de carga construye bloques de datos en la memoria y salva estos bloques directamente en las extensiones donde las tablas van a a ser cargadas. Las entradas redo log no se generan a menos que la base de datos est en el modo de archivo. La carga por va directa utiliza las especificaciones del campo para construir todos los bloques de datos Oracle, y escribe estos bloques directamente en los ficheros de datos Oracle. Evita el paso por el buffer de la base de datos y accede al SGA slo para manejar extensiones y ajustar la HWM. Generalmente la carga por va directa es ms rpida que la convencional, pero no puede ser utilizada en todas las situaciones. La seccin siguiente compara la va de carga convencional con la directa y ofrece ejemplos de situaciones en las que cada una de ellas puede ser utiliada. Nota: El fichero de comando catldr.sql, suministrado por Oracle, crea vistas que son utilizadas por la carga por va directa. Esta es invocada automticamente cuando se ejecuta el fichero de comandos catalog.sql.

Comparacin De Las Vas De Acceso De Carga Directa Y Convencional


Carga Convencional Utiliza los COMMIT para hacer cambios permanentes Entradas Redo Log generadas siempre Impone todas restricciones Dispara Triggers INSERT Puede cargarse en tablas agrupadas (CLUSTER) Otros usuarios pueden hacer cambios en las tablas Carga Directa en la Va de Acceso Utiliza Data Saves Genere Redo Log en condiciones especficas (NO LOGGING) Se impone slo a la clave primaria, nica y NOT NULL No se disparan los Triggers INSERT No puede cargarse en tablas agrupadas (CLUSTER) Otros usuarios no pueden hacer cambios en las tablas

Administracin de Bases de Datos

156
Mtodo para Salvar Datos Las cargas por va convencional utilizan el proceso SQL y la base de datos COMMITs para salvar datos. La insercin de una formacin de grabaciones es seguida por una operacin de commit. Cada dato cargado puede relacionar varias transacciones. Las cargas por va directa data saves para escribir los bloques de datos en los ficheros de datos Oracle. Las siguientes funciones diferencian unos datos salvados de un commit: Cuando se salvan datos, slo se escriben en la base de datos bloques enteros de la misma. Son escritos despus de la HWM de la tabla, y despus de salvados los datos se mueve la HWM. Los recursos internos nos son liberados despus de salvar los datos. Salvar los datos no finaliza la transaccin. Los ndices no son actualizados cada vez que se salvan los datos. Logging de Cambios La carga por va convencional genera tambin entradas redo log como cualquier sentencia DML. Cuando se utiliza una va directa, no se genera la carga de entradas redo log si: La base de datos est en modo NOARCHIVELOG. La base de datos est en el modo ARCHIVELOG, pero logging est inhabilitado (Logging puede ser inhabilitado al sellecionar el atributo NOLOG para la tabla o al utilizar la clusula UNRECOVERABLE en el fichero de control)

Imposicin de Restricciones Durante una carga por va convencional, todas las restriscciones que estn habilitadas son impuestas como lo hubieran sido durante cualquier operacin DML. Durante las cargas directas, las restricciones son manejadas como se muestra a continuacin: Las restricciones NOT NULL son verificadas cuando se contruyen las formaciones. Las restricciones clave ajena y CHECK estn inahilitadas, y pueden estar habilitadas al finalizar la ejecucin utilizando los comandos apropiados en el fichero de control. Las restricciones de clave ajena estn inhabilitadas porque hacen referencia a otras filas o tabla, y las CHECK tambin estn porque pueden utilizar funciones SQL. Si slo un pequeo nmero de filas tienen que ser insertadas en una tabla grande, utiliza cargas convencionales. La clave primaria y las restricciones nicas son verificadas durante y al final de la ejecucin, y pueden estar inahilitadas si son violadas.

Carga en Tablas Agrupadas


No pueden ser utilizadas cargas directas para la carga de filas en tablas agrupadas. Las tablas agrupadas pueden ser cargadas slo utilizando la va convencional. Bloqueo Mientras una carga directa se est procesando, otras transacciones no pueden hacer cambios en las tablas que estn siendo cargadas. La nica excepcin a esta regla es cuando son utilizadas concurrentemente varias sesiones de carga paralela directa. Las cargas paralelas directas son analizadas en la seccin siguiente.

Administracin de Bases de Datos

157
Las cargas paralelas directas permiten el uso de varias sesiones concurrentes de carga diecta en la carga de datos en una tabla sencilla. Secuencia de Operaciones Usar diferentes ficheros de datos de entrada para cada sesin de carga paralela. Cuando se inician varias sesiones de carga paralela, el cargado se realiza siguiendo los siguientes pasos: 1. Cada session utiliza un segmento temporal para cargar los datos desde la entrada de fichero de datos. Estos segmentos temporales son creados en el tablespace que contiene la tabla que va a ser cargada. Si el tablespace tiene varios ficheros de datos, un usuario puede especificar, para cada sesin, el fichero de datos donde el segmento temporal va a ser creado. Los parmetros de almacenamiento para estos segmentos pueden ser especificados por el usuario. Por defecto, estos segmentos utilizan los mismo atributos de almacenamiento que la tabla que va a ser cargada. 2. la nica extensin en cada segmento temporal est dispuesta de forma que se desasigna el espacio no utilizado cuando finaliza la sesin. 3. todos los segmentos temporales son combinados para formar un segmento al final de la ejecucin. 4. El segmento temporal resultante es aadido al segmento de la tabla.

Restricciones Las siguintes restricciones son impuestas en las cargas por va directa paralela: los ndices no son mantenidos por la carga. Borrar ndices antes de una carga paralela y volverlos a crear al finalizar la ejecucin. La integridad referencial, contrl de restricciones y disparadores tienen que estar inhabilitdos y tienen que ser habilitados de nuevo manualmente. Las filas slo pueden ser aandidas a datos existentes, ya que las cargas individuales no estn coordinadas. Si los datos de la tabla tienen que ser reemplazados, truncar manualmente la tabla antes de la carga paralela.

Uso de SQL*Loader

UNIX: Comanado Lnea Usar el comando siguiente en un sistema UNIX para realizar la carga de datos: $sqlldr [ keyword = ] value [ [ [,] keyword = ] value ] . . . where: keywork value es una de las palabras clave analizada en la seccion siguiente es el valor asignado a la palabra clave

Administracin de Bases de Datos

158
Nota Si las palabras clave no estn especificadas, los valores tienen que serlo en el orden correcto. Aunque esta opcin est disponible, generalmente est recomendado el uso de palabras clave. Como se muestra en el ejemplo, es posible especificar algunos de los primeros valores sin palabras clave y luego especificar otros con palabras clave.

WINDOWS NT: Comanado Lnea Usar el comando siguiente en Windows NT para realizar la carga de datos: $sqlldr [ keyword = ] value [ [ [,] keyword = ] value ] . . .

OEM 1. 2. 3. 4. 5. 6. 7. 8. Usar el Data Manager Seleccionar Datos Carga Introducir el nombre de la mquina y el nombre del fichero de control en la pgina de introducciones del Data Manager Wizard. Introducir los nombres de otros ficheros de la pgina Ficheros Opcionales. Especificar las opciones de carga, incluyendo la va de acceso, en la pgina Opciones Avanzadas. Si hubieran sido especificados una mquina remota y un proceso diferido en al paso 3, especificar un programa en la pgina Programacin. Verificar las opciones en la pgina Resumen y hacer click en Finish. Si hubiera sido ekegida una mquina remota en el paso 3, especificar un destino en la casilla de dilogo.

Palabras Clave del Comando Lnea


A continuacin se enumera algunas de las palabras clave y opciones de carga utilizadas normalmente y que se especifican en la pgina 3 del Data Manager Wizard. Palabra Clave USERID CONTROL LOG BAD DATA DISCARD DISCARDMAX Significado Nombre del usuario Oracle y clave. Nombre del fichero de control. Nombre del fichero log (defecto es controlfile.log). Fichero que almacena todas las grabaciones rechazadas (defecto controlfile.bad). Entrada de nombres de ficheros de datos. Ficehro opcional de descarga donde se almacenan grabaciones no seleccionadas. Numero mximo de rechazos que se permiten (por defecto permite todos los rechazos. Usar este parmetro como medida de seguridad para detener la ejecucin si se especifican ficheros de entrada de errores. Numero de grabaciones a evitar, usadas primeramente para continuar la carga (usar esta opcin slo si se carga a una tabla sencilla o para evitar un nmero identico de grabaciones para todas las tablas cargadas). Especifica el nmero de grabaciones a grabar, despus de evitar las especificadas en SKIP. Nmero mximo de grabaciones malas a evitar. Especifica el nmero de filas que se ha de construir en la formacion antes de cada insercin para cargas convencionales (para las cargas por va directa este define el nmero apropiado de filas leidas desde una enrtada por cada dato salvado. La carga directa construye bloques enteros, y luego ignora los rechazos y filas no validadas, antes de salvar los datos). Especifica el nmero mximo de bytes, para cargas convencionales, que van a usarse para la construccin de una formacin de filas que van a ser insertadas en cada llamada de base de datos. (Si el parmetro ROWS est especificado tambin, el SQL*Loader construir tantas filas como se especifique en ROWS, sometido al lmite impuesto en INDSIZE) SQL*Loader utiliza la via directa si este parmetro est seleccionado en TRUE. De esta forma se usa la va convencional, que es el valor por defecto. Especifica el nombre del fichero que contiene todos los parmetros de carga (Los definidos en la lnea de comando sobreescribirn cualquier valor definido en el fichero de parmetros). Este parmetro, que solo es vlido para cargas directas, especfica que se van a producir mltiples cargas paralelas directas. Especfica el fichero en el que se va a crear el segmento temporal para una carga directa paralela.

SKIP

LOAD ERRORS ROWS

BINDSIZE

DIRECT PARFILE PARALLEL FILE

Administracin de Bases de Datos

159

Los parmetros tambin pueden ser definidos dentro del fichero de control. Nota Los parmetros definidos aqu no son exhaustivos. Para tener una referencia completa, ver el capitulo SQL*Loader Command-Line Reference del manula Oracle8 Server Utilities.

SQL*Loader: Ficheros de Entrada o Fichero parmetro Opciones de carga Fichero de datos Grabaciones de entrada Fichero de control LOAD DATA INFILE ulcase6.dat INSERT INTO TABLE emp ( empno POSITION(01:04) integer EXTERNAL NULIFF empno=BLANKS, ... )

Fichero de Parmetros El fichero de parmetros puede ser utilizado para especificar los parmetros de una carga. Usar el fichero de parmetros para almacenar todos los utilizados normalmente. Este fichero usa el formato siguiente para definir los parmetros. KEYWORD = VALUE

Fichero de Control El contenido de un fichero de control incluye lo siguinete: Los nombres de los ficheros de datos de entrada, que usan la clusula INFILE. La composicin de una grabacin lgica desde una fsica en los ficheros de datos de entrada, que usan clusula como CONCATENATE y CONTINUEIF. Campo de especificaciones, incluyendo posicin, tipos de datos y especificaciones de condicin de delimitadores, que usan la clasula FILEDS. Nombres de tablas y el mtodo de carga es decir si los datos van a ser cargados en una tabla vaca o insertandos o truncados en grabaciones existentes, o aadidos a unos datos existentes, usando la clusula INTO TABLE. Grabaciones que se deben evitar para cada tabla, utilizando la clusula CONTINUE_LOAD. Condiciones que se usarn para la seleccin de grabaciones que van a ser cargadas, usando la clusula WHEN. Columnas que van a ser cargadas. Reglas para la generacin de valores de columna, utilizando clusulas como RECNUM y SYSDATE, y aplicando funciones SQL. Operaciones de columnas como arreglo y sustitucin de ceros por nulos. Parmetros de carga utiliando la cusula OPTIONS. Especificaciones de almacenamiento para segmentos temporales creados durante la carga paralela directa. Comentarios con el prefijo -- Otras opciones de carga directa como: o SINGLEROW para mantener los ndices de una fila en sus bases. o REENABLE para habilitar inhabilitar restricciones al final de la ejecucin. o SORTED_INDEXES para especificar si los datos estn preclasificados. o UNRECOVERABLE para suprimir la generacion de redo.

Administracin de Bases de Datos

160

Nota La seleccin del atributo NOLOG para la tabla usando la palabra clave NOLOGGING es equivalente al uso de la opcin UNRECOVERABLE en el fichero de control. Los datos tambin pueden ser almacenados dentro del fichero de control, especificando INFILE*, y utilizando BEGINDATA para sealar el principio de los datos. Si se utiliza esta opcin, todas las grabaciones que sigan a BEGINDATA sern interpretadas como datos. Se pueden encontrar varios casos que ilustran diferentes opciones y elementos del fichero de control en los directorios $ORACLE_HOME/rdbms/demo y %ORACLE_HOME%\RDBMS80\LOADER de UNIX y Windows NT, respectivamente. Fichero de Datos El fichero de datos contiene las grabaciones que van a ser procesadas en el formato definido en el fichero de control.

Contenido del Fichero Log Informacin de cabecera Informacin global: parmetros y nombre de ficheros Tabla de informacin: especificaciones de tabla y columna Informacin del fichero de datos: grabaciones procesadas Informacin de carga de tabla: errores y descargas Resumen, estadsticas

El fichero log es obligatorio y la carga termina si este no puede ser creado, dada la falta de espacio, o permiso. El fichero de log contiene: Informacin de cabecera como la fecha de la ejecucin y el nmero de versin del software. Informacin global incluyendo: o Los nombres de todos los ficheros de entrada y salida. o Argumentos de la lnea de comando. Informacin de tabla como: o Nombre de la tabla. o Condiciones de carga y mtodo. Informacin de campo y columna Informacin del fichero de datos mostrando grabaciones escartadas y rechazadas con razones, slo para ficheros de datos con error en los datos. Informacin de carga de tabla como: o Nmero de filas crgadas o Nmero de filas que aunque calificadas para la carga han sido rehusadas debido a errores en los datos o Nmero de filas que fueron rechazadas o Nmero de filas en que los campos relevantes fueron todos nulos Resumen, estadsticas que muestran los siguientes datos: o Cantidad de espacio colocado en la formacin o Estadsticas de carga para todos los ficheros de datos o Inicio/final del tiempo de ejecucin o Tiempo total pasado o Tiempo total de CPU incluyendo el de todos los ficheros I/O, aunque excluyendo cualquier tiempo CPU utilizado por procesos background.

SQL*Loader: Otros Archivos de Salida Fichero malo o Grabaciones rechazadas o El mismo formato que los ficheros de datos Ficheros de descartados o Grabaciones que no satisfacen las condiciones. o Mismo formato que los ficheros de datos.

Administracin de Bases de Datos

161

Fichero Malo El fichero malo contiene grabaciones que son descartadas durante su proceso debido a las siguientes razones: Las grabaciones de entrada tienen errores tales como nmero insuficiente de campos o campos formateados erroneamente. Las filas no pueden ser insertadas por razones como violaciones de restriccin. Las grabaciones en el fichero malo estn en el mismo formato que las grabaciones de entrada. Las grabacionespueden ser utilizadas, despus de rectificar los errores, para volver a cargar los datos.

Fichero de Descartados Este fichero contiene datos en el mismo formato que los ficheros de entrada de datos y es muy til si los datos necesitan ser cargados selectivamente en tablas bien en diferentes bases de datos o en diferentes momentos.

SQL*Loader: Uso de las Directrices Usar un fichero de parmetro para especificar las opciones lnea de comando utilizadas comnmente. Situar datos dentro del fichero de control slo para una carga nica pequea. Mejorar el rendimiento: o Colocando espacio suficiente. o Clasificando los datos en el ndice mayor. o Para cargas paralelas, especificar diferentes ficheros para segmentos temporales

Seguir las siguientes directrices cuando se utilicen SQL*Loader para minimizar errores y mejorar el rendimiento: Usar un fichero de parmetros para especificar las opciones, ms comnmente utilizadas del comando lnea. Por ejemplo, si se hace la grabacin en un almacn de datos cada semana, todas las opciones excepto los nombres de ficheros pueden ser los mismos. La separacin del fichero de control y el fichero de datos permite reutilizar el primero para varias sesiones de carga. La preasignacion de espacio basndose en el volumen de datos esperados, evita la asignacin dinmica de extensiones durante la carga y mejora la velocidad de la misma. Cuando se utiliza la carga directa, se usan segmentos temporales para generar ndices de los nuevos datos. Estos ndices se unen con los existentes al final de la carga. Al clasificar los datos de entrada en las claves del ndice mayor, el uso del espacio de clasificacin puede ser minimizado. Con cargas paralelas directas Ud. puede especificar la localizacin de los segmentos utilizados para la insercin de datos. Para cada sesin de carga, especificar un fichero de la base de dato distinto con el fin de alcanzar el rendimiento mximo.

SQL*Loader: Solucin de Problemas Cuando se termina una carga de forma anmala, todos los datos han sido cargados hasta el punto del fallo. Despus de rectificado el problema como se analiza en los siguientes prrafos, proceda como sigue para completar la carga: Si se est cargando a una tabla o si todas estas tienen el mismo nmero de grabaciones procesadas, utilice el parmetro del comando lnea SKIP para continuar la carga. Si varias tablas fueron cargadas y el nmero de grabaciones procesados no es el mismo en todas las tablas, usar la opcin CONTINUE_LOAD del fichero de control para especificar el nmero de grabaciones que se deben evitar para cada tabla. Controlar cualquier ndice sealado unusable. Esto sucede si el ndice no es consistente con la tabla. Borrar los ndices en este estado y volverles a crear despus de finalizar la carga. Espacio insuficiente: una carga puede terminar si el servidor Oracle no pudiera colocar espacio suficiente en las tablas cargadas para acomodar todas las filas insertadas. En este caso, investigar la causa del problema si es debido a insuficiente espacio en el disco, o los ficheros estn llenos, se est alcanzando MAXEXTENTS, y corregir el problema. El instance falla: investigar la razn del fallo, rectificarlo, reiniciar el instance y continuar la carga. Los datos no estn en el orden especificado: los datos estn cargados, pero en un estado no utilizable. Eliminar y volver a crear los ndices que son utilizables. Duplicar los valores en una clave primaria o columna o ndices nicos: esto no abortar el proceso de carga, pero puede desencadenar la inhabilitacin de restricciones o ndices inutilizables. En el caso de errores de restricciones, utilizar una tabla de excepciones para atrapar los errores y rectificarlos. Si est inutilizable un ndice nico, puede tener que detectar errores intentando crear una restricccion nica en la columna indexada, atrapar los errores en una tabla de excepcin y corregirlos.

Administracin de Bases de Datos

162
BINDSIZE demasiado pequeo: usar un volumen mayor y cargar los datos. Los errores o descargas que exceden el lmite seleccionado: esto sucede cuando una carga se aborta debido al nmero de grabaciones no vlidas de las descartadas han excedido ERRORS o el DISCARDMAX especificado. La cuasa ms comn de este problema es el uso de incorrectos ficheros de entrada de datos. Controlar y utilizar los ficheros correctos.

Nota Las clusula SORTED INDEXES es aplicable slo a vas de carga directa. La sisntaxis y detalles de uso, consultar el captulo Referencia del Fichero de Control SQL*Loader del manual Oracle8 Server Utilities.

Administracin de Bases de Datos

163

Captulo N 17
UTILIDADES ORACLE DE EXPORTACIN E IMPORTACIN

Vista General

Utilidad Oracle Export e Import

Vista General
Estas utilidades proporcionan lo siguiente: Archivo histrico. Salvar definiciones de tablas (con o sin datos). Mover datos entre maquinas y BD o versiones de servidores Oracles. Proporcionar proteccin de fallos por errores de usuario.

La utilidad Export proporciona un backup lgico de un objeto o de toda la BD. La utilidad Import es utilizada para leer un fichero Export vlido para mover datos entre Bases de Datos. Los Redo Log histricos no pueden ser aplicados a los objetos que han sido importados desde un fichero export, por lo tanto puede ocurrir prdida de datos pero pueden ser minimizadas. El DBA puede usar las utilidades Export e Import para realizar Backups normales del sistema operativo, usndolos para: Crear un archivo histrico de un objeto de la BD o una BD entera. Por ejemplo cuando un esquema es modificado para soportar cambios de requerimientos del negocio. Salvar las definiciones de las tablas en un fichero binario. Este puede ser til para crear una lnea base de mantenimiento de una estructura de esquema dado. Las utilidades Export e Import son usados para mover datos de una versin a otra, tales como para actualizar Oracle7 a Oracle8. Ayuda a proteger contra errores de usuario, donde el mismo puede accidentalmente borrar o truncar una tabla.

MTODOS DE EJECUTAR LA UTILIDAD EXPORT


Un dilogo interactivo La pgina export del Gestor de datos dentro del Enterprise Manager La interfaz de lnea de comandos, especificando parmetros. Tres modos: tabla, usuario y Base de Datos completa.

MTODOS DE EXPORT Dilogo interactivo. Especificando el comando EXP en el sistema operativo sin parmetros, la utilidad Export preguntar las entradas, presentando los valores por defecto. La pgina export del Gestor de Datos del Oracle Enterprise Manager. Si la lnea de comandos es elegida, las opciones seleccionadas deben ser explcitamente especificadas en la lnea de comandos. Cualquier opcin olvidada tomar el valor por defecto de la utilidad Export.

MODOS EXPORT Modo Export Table Este modo exporta tablas especificas en el esquema de usuario, en vez de todas las tablas. Un usuario privilegiado puede exportar tablas especificas propiedad de otros usuarios. Modo Export User Este modo exporta todos los objetos de un esquema de usuario. Usuarios privilegiados pueden exportar todos los objetos de los esquemas de un conjunto de usuarios especificados. Este modo puede ser usado para realizar una exportacin completa de la BD.

Administracin de Bases de Datos

164
Modo Base de Datos Completa Este modo exporta todos los objetos de la BD, excepto aquellos del esquema de SYS. Solo usuarios privilegiados pueden exportar en este modo.

LINEA DE COMANDO EXPORT


Sintaxis: exp keyword = value exp keyword = (value, value2, , value n)

Ejemplo: Exp scott/tiger tables=(emp,dept) rows=y file=expincr1.dmp

se pueden copiar los datos de una BD en un fichero del sistema operativo, usando el modo lnea de comandos de la utilidad Export. Este fichero solo puede ser ledo por la utilidad Import. Ejemplo Crear un fichero export llamado expincr1.dmp que incluya las tablas, emp y dept, del esquema scott incluyendo las filas. $ exp scott/tigre tables=(emp,dept) rows=y file=expincr1.dmp Parametros USERID FILE ROWS FULL OWNER TABLES INDEXES DIRECT INCTYPE PARFILE HELP LOG CONSISTENT Parametros BUFFER POINT_IN_TIME_RECOV ER RECOVER_TABLESPAC ES Descripcin Usuario/password de los objetos del esquema a exportar. Nombre del fichero de salida. Incluye las filas de la tabla en el fichero export. Exporta la BD entera. Usuarios a exportar. Tablas a exportar. Indices a exportar. Especifica modo directo de exportacin. Tipo de nivel de exportacin. Fichero de especificacin de parmetros. Presentar los parmetros de exportacin en modo interactivo. Fichero para informacin y mensajes de error. Vista Read-consistent de la BD cuando los datos son actualizados durante una exportacin. Descripcin Tamao del buffer Indica si la utilidad Export exporta o no uno o mas tablespaces de una BD Oracle. Especifica los tablespaces que sern recuperados usando la recuperacin point-in-time

Nota: sta lista no es la lista completa pero son aquellos que un DBA usa ms frecuentemente para propsitos de restauracin.

Administracin de Bases de Datos

165
1) EXPORT COMPLETO Database Export file

Table 1

Table 2

Table 1

Table 2

Table 3

Table 4

Table 3

Table 4

Table 5

Table 6

Table 5

Table 6

Time 1

Export Completo Si se utilizan exports acumulativos e incrementales, peridicamente debera realizarse una exportacin completa para crear un backup base. Seguidamente al export completo, realizar frecuentemente exports incrementales y ocasionalmente Exports acumulativos. Despus de un perodo de tiempo dado, se deber comenzar el ciclo otra vez con otro Exports completo. Como se muestra en el ejemplo anterior, un export completo de la BD con todas las tablas y definiciones de datos. Restricciones Se pueden realizar Exports completos, incrementales o acumulativos solamente en modo full de la BD (FULL=Y).

2) EXPORT INCREMENTAL Database Export file

Table 1

Table 2

Table 1

Table 3

Table 4

Table 3

Table 5

Table 6

Table 6

Time 2

Export Incremental Un export incremental incluye los objetos que han sido cambiados desde el ltimo export de cualquier clase. Un export incremental exporta las definiciones de tablas y todos sus datos, no solo las filas cambiadas, tpicamente, se realizan Exports incrementales ms a menudo que acumulativos o completos. Cualquier modificacin en (UPDATE, INSERT o DELETE) en una tabla cualifica automticamente a esta tabla para un Export incremental. Ejemplo En el ejemplo anterior, las tablas 1,3 y 6 tienen cambios desde el ltimo last exports en el Tiempo 1, que fue un export completo. Nota: un export incremental puede no ser una buena estrategia para aplicaciones que a menudo acceden a unas pocas tablas grandes. Es aplicable para aplicaciones departamentales donde los cambios son ms dispersos en tablas pequeas.

Administracin de Bases de Datos

166
3) EXPORT ACUMULATIVO Database Export file

Table 1

Table 2

Table 1

Table 3

Table 4

Table 3

Table 4

Table 5

Table 6

Table 6

Time 3

Export Acumulativo Un export acumulativo salva las tablas que han tenido cambios desde el ltimo Export acumulativo o completo. Ejemplo En el ejemplo superior, las tablas 1,2 y 6 han cambiado desde el Tiempo 1 y la tabla 4 desde el Tiempo 2. el export acumulativo por lo tanto salvar todas las tablas desde el ltimo Export completo. Beneficios del Export Incremental y Acumulativo Restaura tablas accidentalmente borradas por los usuarios. Exportar ficheros ms pequeos. Menor tiempo para exportar.

Los Exports incrementales y acumulativos ayudan a resolver problemas surgidos a los DBAs que trabajan en entornos donde muchos usuarios crean sus propias tablas. Los beneficios de este tipo de Exports incluyen: La restauracin por el DBA da tablas accidentalmente borradas por los usuarios. Pequeos ficheros de exportacin porque menos datos son exportados. Menor tiempo de exportacin porque slo aquellos objetos que han cambiado desde el ltimo export incremental o acumulativo son salvados.

CONCEPTOS DE EXPORT DIRECT PATH

Export Generate SQL Commands Two Task common (TTC)

Oracle Server SQL command processing Buffer cache manager Write blocks

Export Dump file TTC buffer Evaluating buffer Buffer cache Read blocks

Oracle8 Server

Utilizando la caracterstica Direct Path, se pueden extraer datos mucho ms rpidamente con la utilidad Export. Lee datos directamente de la capa de datos en vez de traerlos, procesando comandos SQL.

Administracin de Bases de Datos

167

Mecanismo de Export Direct Path La utilidad Export verifica el modo de lectura directa. Direct Path no compite con otros recursos si el modo directo est fijado en ON. El modo de lectura directa, lee bloques de la BD en un rea privada usada por la sesin. Las filas son transferidas directamente al buffer TWO-Task Common (TTC) para su transporte. Los datos en el buffer TTC est en el formato que la utilidad Export espera.

ESPECIFICANDO EXPORT DIRECT PATH Como argumento de la lnea de comando del comando Export:

exp userid=scott/tigre full=y direct=y


Como una palabra clave en un fichero de parmetros:

exp parfile=filename

Antes de usar direct path export, se debe ejecutar el fichero de comandos actualizado catexp.sql

Mtodos de uso del Parmetro DIRECT Opcin Lnea de Comando Se puede invocar direct path export usando el parmetro DIRECT en la lnea de comandos del sistema operativo. $ exp user=scott/tigre full=y direct=y Fichero de parmetros Un ejemplo de un fichero de parmetros, exp_par.txt: USERID=scott/tigre TABLES=(emp,dept) FILE=exp_one.dmp DIRECT=Y Para ejecutar el parmetro desde la lnea de comandos del sistema operativo: $ exp parfile=exp_param.txt

CARACTERSTICAS DE EXPORT DIRECT PATH


El tipo de exportacin es indicada en la pantalla, el fichero de volcado de exportacin y el fichero de log. Los datos estn en el formato que Export espera, evitando innecesarias conversiones de datos. Utiliza un sentencia optimizada SQL SELECT. La opcin direct path de la utilidad Export introduce algunas caractersticas que la diferencias del conventional path. Caractersticas Direct Path El tipo de Export es indicado en la salida de pantalla, fichero de volcado de export, y en fichero de log especificado con el parmetro LOG. Los datos ya estn en el formato que Export espera, as se evita una innecesaria conversin. Los datos son transferidos al cliente Export, que escribe los datos dentro del fichero de exportacin. El Direct Path export usa un optimizado SELECT * FROM table sin predicados. Nota: el formato de la columna de datos y especificacin en el fichero de volcado de export difieren del convencional-path export.

Administracin de Bases de Datos

168
RESTRICCIONES Export Direct Path La opcin direct-path no puede ser invocada interactivamente El juego de caracteres del Cliente y del Servidor deben ser iguales. El parmetro Buffer no afecta. No se puede utilizar la opcin direct path para exportar filas que contienen LOB, BFILE, REF o tipos de objetos.

La opcin direct path de la utilidad Export tiene algunas restricciones que la diferencian de convencional-path export. Restricciones Direct Path La caracterstica direct path export no puede ser invocada usando una sesin interactiva EXP. Cuando la opcin direct path es utilizada, el conjunto de caracteres del lado cliente debe ser igual al conjunto de caracteres del lado servidor. El parmetro Buffer de la utilidad Export no tiene efecto en direct path Export; es unicamente utilizada en la opcin conventional-path. No se pueden exportar filas direct path que contengan tipos de datos LOB, BFILE, REF o tipo de objeto, ni columnas que incluyan VARRAY columnas y tablas nested. Solo la definicin de datos para crear la tabla es exportada, no los datos.

COMPATIBILIDAD DE LA UTILIDAD EXPORT Se puede utilizar la utilidad EXPORT desde cualquier versin Oracle7 para exportar a un servidor de Oracle8. El comando Export de Oracle6 (o anterior) no puede ser utilizado contra un BD de Oracle8. Sea cuidadoso con las diferentes versiones.

Como DBA deber ser cuidadoso con los elementos de compatibilidad asociados a la utilidad Export. Elementos Se puede utilizar el export de Oracle7 contra una BD Oracle8 para crear un fichero de exportacin Oracle7. El comando Export de Oracle6 (o anterior) no puede ser utilizado contra un BD de Oracle8. Cuando una versin inferior de la utilidad export corre contra una versin superior del servidor Oracle, categoras de los objetos de la BD que no existen en la versin inferior son excluidas de la exportacin. Si una tabla fue creada usando la opcin direct path entonces el fichero est en diferente formato y no puede ser ledo por una utilidad Import anteior a Oracle7.3. Intentar usar versiones superiores de Export con Import de servidores Oracle anteriores a menudo produce errores.

Administracin de Bases de Datos

169
USO DE LA UTILIDAD IMPORT PARA RECUPERACIONES
Crea definiciones de tablas. Extrae datos de un fichero valido de exportacin. Importa desde un completo, incremental o acumulativo fichero de exportacin. Recupera fallos de errores de usuario.

La utilidad Import puede ser usada para recuperaciones de datos utilizando un fichero vlido de la utilidad Export.

MODOS DE IMPORT
MODO Tabla Usuario BD Completa DESCRIPCIN Import especfica tablas dentro de un esquema. Importa todos los objetos que le pertenecen. Importa todos los objetos del fichero de exportacin.

Modo Import Tabla Este modo importa todas las tablas especificadas en el esquema de usuario, normalmente todas las tablas. Un usuario privilegiado puede importar tablas especificas propiedad de otros usuarios. Modo Import Usuario Este modo importa todos los objetos de un esquema de usuario. Usuarios privilegiados pueden importar todos los objetos de esquemas de un conjunto de usuarios especificados. Modo Base de Datos Completa Este modo importa todos los objetos de la BD, excepto aquellos del esquema de SYS. Solo usuarios privilegiados pueden usar Import en este modo.

LNEA DE COMANDOS IMPORT


Sintaxis: imp keyword = value or keyword = (value, value2, . . . value n)

Ejemplo: imp scott/tiger tables=(emp,dept) rows=y file=expincr1

Ejemplo Importar el esquema de scott, las tablas emp y dept, incluyendo las filas, usando el fichero de exportacin llamado expincr1.dmp $ imp scott/tigre tables=(emp,dept) rows=y file=expincr1.dmp nota: las opciones del modo lnea de comandos son similares a las opciones del modo interactivo.

Administracin de Bases de Datos

170
Parmetros Import Parametros USERID FILE ROWS FULL TABLES INDEXES INCTYPE PARFILE HELP LOG DESTROY FROMUSER TOUSERS INDEXFILE POINT_IN_TIME_R ECOVER Descripcin Usuario/password de los objetos del esquema a importar. Nombre del fichero de entrada. Debe ser fichero vlido para la utilidad Export. Incluye las filas en la tabla del fichero import. Importa el fichero entero. Tablas a importar. Indices a importar. Especfica el tipo de import incremental. Las opciones son SYSTEM y RESTORE. Fichero de especificacin de parmetros. Presenta los parmetros import en modo interactivo. Fichero para informacin y mensajes de error. Especfica si los ficheros de datos existentes de la BD deberan ser reutilizados o no. Lista de esquemas conteniendo los objetos a importar. Especfica una lista de nombres de usuario cuyos esquemas sern importados. Especifica un fichero con los comandos de creacin de ndices. Indica si un Import recupera o no, uno o ms tablespaces en una BD Oracle en un momento anterior sin afectar al resto de la BD.

SECUENCIA DE PROCESO IMPORT


Las tablas nuevas son creadas. 1. Los indices son definidos. 2. Los datos son importados. 3. Los indices son compartidos. 4. Los triggers son importados y las condiciones de integridad son habilitadas en las nuevas tablas.

Cuando se importa una tabla, el fichero de exportacin es ledo y las tablas y los datos son creados en el siguiente orden: 1. Las nuevas tablas son creadas. Un punto clave es ste, estas son tcnicamente tablas Nuevas para Oracle. Tienen los mismo datos y caractersticas que las tablas originales, pero en realidad estn siendo nuevamente creadas en la BD. Esto es lgico porque los ficheros de log archivados no se aplicarn a estas tablas, ya que los logs archivados tcnicamente no tienen actualizaciones en las referencias de las nuevas tablas creadas. 2. las estructuras de ndices son construidas. El DBA puede emplear menos tiempo en el proceso de importacin fijando el parmetro INDEXES=N, creando la construccin de los ndices seguidamente al proceso de Importacin. Esto tambin limitara el nmero de segmentos de rollback necesarios para soportar la importacin. Los datos son importados en las tablas, pero slo si el parmetro ROWS=Y. Los ndices son popularizados. Triggers son importados y las restricciones de integridad son habilitadas en las nuevas tablas.

3. 4. 5.

El orden en que se importan las tablas puede ser importante. Por ejemplo, si la tabla con claves ajenas tiene un chequeo referencial en la tabla con la clave primaria, y la clave ajena es importada primero, entonces todas las filas que referencien a la clave primaria no sern expulsadas si las restricciones estn habilitadas. Para una exportacin completa de la BD esto no es problema. Nota: los ndices son construidos cuando los datos son aadidos a la tabla. Esto es por lo tanto una forma poco eficiente de recrear los ndices.

CONSIDERACIONES NLS El fichero de exportacin identifica el esquema codificado de caracteres usados en el fichero de datos. La utilidad import traslada datos al juego de caracteres de su sistema host. Un conjunto de caracteres multibyte del fichero de exportacin deber ser importado en el sistema que tiene las mismas caractersticas.

Administracin de Bases de Datos

171
Cuando se mueven los datos de una BD a otra con diferentes conjuntos de caracteres, asegrese despus que la conversin de datos ha sido realizada apropiadamente. Esto se puede hacer fijando la variable del entorno NLS_LANG con la definicin del conjunto de caracteres de la BD donde los datos son exportados. No fijar esto correctamente podra causar una conversin no deseada de caracteres en los datos, causando posiblemente prdida de datos. Ejemplos Cuando se convierten desde un conjunto de caracteres ASCII-bit, tal como ingls Americano, a un conjunto de caracteres de 8-bit como el Dans, la conversin no es necesaria porque los caracteres tienen un carcter equivalente en el albafeto Dans. Cuando se convierte un conjunto de caracteres ASCII de 8-bit, como el Dans a un conjunto de 7-bit como el Ingls Americano, provoca que los caracteres Daneses extra que no son encontrados en el alfabeto Americano son convertidos a interrogaciones (?). en este caso las interrogaciones sustituyen a los caracteres Daneses desconocidos. Directrices En los movimientos de datos de 8-bit a 8-bit, si hay caracteres perdidos depende de los lenguajes especficos utilizados para los datos. Por ejemplo, el alfabeto Espaol tiene letras que no existen en el alfabeto Dans, as moviendo datos de una BD en Espaol al Dans se producir una conversin y por lo tanto una posible prdida de aquellos caracteres. Los movimientos de datos multi-byte a multi-byte tambin dependen de los lenguajes especficos multi-byte.

Administracin de Bases de Datos

172

Captulo N 14
RECUPERACIN ORACLE SIN ARCHIVADO
Esta leccin discute situaciones de recuperacin para BD en modo noarchivelog. La BD en produccin nunca debera estar en este modo, sin embargo BD de prueba, desarrollo o entrenamiento si pueden dependiendo de los requerimientos de gestin o de los usuarios. Nota: Solamente usar el modo noarchivelog si: La prdida de datos entre backups puede ser tolerada. La recuperacin es rpida reaplicando los datos al fichero batch. Si los tablespaces son slo lectura o los datos raramente cambian. Por defecto, la BD esta en modo noarchivelog.

FALLA DE SOPORTE Fallo de Soporte y Recuperacin Sin Archivado Fallo Prdida de disco, fichero de datos, o corrupcin. Recuperacin Restaurar todos los ficheros de datos, ficheros de control, y redo logs. Restaurar ficheros de password y Ficheros de parmetros es opcional.

Cuando un fallo de soporte ocurre, un backup vlido de la BD cerrada debe existir para la recuperacin, ya que todos los ficheros Oracle deben ser restaurados, incluso si solo un fichero de datos esta daado o perdido. Asegurese que los siguientes ficheros han sido restaurados. Todos los ficheros de datos, ficheros de control y redo logs. Recuerde que todos los ficheros Oracle, deben estar sincronizados para abrir la BD. Ficheros de password o de parmetros solamente si estn corrompidos o perdidos. Nota: Para una BD en modo noarchivelog, no hay que restaurar todos los ficheros Oracle si el fichero de redo log no ha sido sobrescrito desde el ltimo backup. Escenario - Hay dos redo logs para una BD. - Un backup de BD cerrada se realiz con una secuencia de log 144. - Mientras la BD est en secuencia de log 145, el fichero de datos 2 esta perdido. Resultado - Ya la secuencia de log 144 no ha sido sobrescrita, el fichero de datos 2 puede ser restaurado y recuperado manualmente. Recuperacin Sin Archivado Ventajas Simple de realizar, con poco riesgo de error. Tiempo recuperacin = tiempo de restauracin de todos los ficheros. Desventajas Los datos se pierden y tienen que ser reintroducidos manualmente. La BD es restaurada entera en el punto del ltimo backup completo cerrado.

Si se decide trabajar con BD de prueba o desarrollo en modo noarchivelog, entonces considerar las siguientes ventajas y desventajas:

Administracin de Bases de Datos

173
Ventajas: Fcil de realizar, ya que solo es necesario una restauracin de todos los ficheros desde el backup. El nico riesgo es restaurar un backup equivocado, sobrescribir el backup, no apagar la BD entes de la restauracin o que el backup no sea vlido, que puede fcilmente resolverse con entrenamiento y procedimiento. El tiempo total de recuperacin es el tiempo empleado por el hardware para restaurar todos los ficheros. Desventajas: Todos los datos introducidos por los usuarios desde el ltimo backup estarn perdidos y debern reintroducirse manualmente. La BD entera tiene que ser restaurada del ltimo backup cerrado completo. Incluso si slo un fichero de datos se ha perdido. RECUPERACIN DE FALLOS DE SOPORTE (modo Noarchivelog) 1 El disco 2 est daado, perdindose el fichero de datos nmero 2. Solamente dos ficheros de log existen. 2 Ya que el ltimo backup fue tomando con nmero de secuencia de log 144 y el nmero de secuencia de log actual es 146, no se puede recuperar el fichero de datos, ya que el redo log 144 ha sido sobrescrito (esto debera ser confirmado si la recuperacin fuese intentada). Por lo tanto, apagar la BD y restaurar todos los ficheros Oracle. SVRMGR> shutdown abort; Para restaurar los ficheros: UNIX > !cp /disk/backup/* /disk/data/ NT > !copy \disk1\backup\*.* \disk1\date\ 3 Cuando la copia ha finalizado, reiniciar la instance: SVRMGR>connect / as sysdba; SVRMGR>startup pfile=initDB00.ora; 4 Notificar a los usuarios que necesitarn reintroducir los datos desde el ltimo backup.

RESTAURACIN DE FICHEROS DE DATOS


Restauracin en una Localizacin Diferente Renombrar el fichero o directorio de localizacin: SVRMGR> connect system/manager as sysdba SVRMGR> startup mount pfile=initDD00.ora; (para iniciar el instance) SVRMGR> alter database rename file /disk1/data/user01.dbf TO /disk2/data/user_01.dbf; SVRMGR> alter database open;

Restauracion de Ficheros a una Localizacin Diferente 1 Si el fichero de control ha sido restaurado en una diferente localizacin, actualizar el fichero de parmetros. 2 Si el fichero de datos o redo log es restaurado en una localizacin o nombre diferente, entonces: - Mostrar la Instance - Usar el comando alter database para actualizar el fichero de control con la nueva localizacin del fichero: SVRMGR> alter database rename file /disk1/data/user01.dbf TO /disk2/data/user_01.dbf; nota: en el entorno UNIX los ficheros deben existir en la nueva localizacin previamente a la utilizacin del comando alter database rename. Esto no es el caso en el entorno NT.

Administracin de Bases de Datos

174
RMAN
Restaurar Utilizando RMAN Restaurar una Base de Datos en modo noarchivelog: RMAN> rum ( allocate channel cl type disk; restore controlfile to disk1/data/control01.con; restore database; sql alter database open resetlogs;

En la restauracin, RMAN utiliza el catlogo de recuperacin o el fichero de control de la BD destino para decidir que backup completo o incremental, que logs archivados o copias de imgenes se usarn. Recuerde, para una BD en modo noarchivelog, todos los ficheros de la BD necesitaran ser restaurados. Sintaxis de Restauracin Un comando restore es normalmente utilizado dentro de un comando run o create script: Restore <Object> <Options>; Donde: Object controlfile to <location> database datafile <quoted_string> tablespace <quoted_string> archivelog all; channel=<name> from tag=<name> parms=<quoted_string> from[backupset|datafilecopy]

Options

nota: esta no es la sintaxis completa. Consideraciones com RMAN Cuando se restauran ficheros para una BD en modo noarchivelog, hay que ser cuidadoso en las siguientes situaciones: La BD destino debe estar montada para la restauracin, RMAN dar error si la BD est abierta. Cuando se restaure una BD, se debe incluir la sintaxis restore controlfile as como el comando restore database (de otra manera slo los ficheros de datos sern restaurados. Los ficheros de datos y el fichero de control deberan restaurarse desde un backup tomado al mismo tiempo. De esta manera todos los ficheros estarn sincronizados, y el comando recover no ser necesario. El comando alter database open resetlogs es necesario ya que ser restaurado un backup del fichero de control. Usar RMAN para restaurar la BD en modo archivelog no es el mejor mtodo, ya que un backup completo es necesario despus de la restauracin debido a la ejecucin de un resetlogs. Solamente se puede restaurar usando RMAN si el backup fue realizado con RMAN. Gestor de Backup Actualmente no es posible restaurar una BD en modo archivelog utilizando el Gestor de Backup, ya que no es una caracterstica disponible la restauracin del fichero de control.

RESUMEN Utilizar el modo archivelog para la Base de Datos en produccin. Recuperacin de fallos de soporte restaurando todos los ficheros Oracle de un Backup Los ficheros pueden ser restaurados en localizaciones nuevas. Si RMAN recupera una Base de Datos en modo archivelog, un nuevo backup debera ser realizado inmediatamente.

Administracin de Bases de Datos

175

Captulo N 15
RECUPERACIN COMPLETA CON ARCHIVADO
Esta leccin trata situaciones de recuperacin para BD en modo archivelog que necesiten ser recuperadas en el momento de un fallo. Una BD en produccin debera correr en modo archivelog, ya que las perdidas de datos son normalmente inaceptables. Las dos situaciones principales que se puede encontrar un DBA son: Recuperacin de un Fallo de la Instance. Recuperacin de un Fallo de Soporte. Nota: Usar el modo archivelog si: Por defecto, la BD esta en modo noarchivelog. Se debe cambiar el modo manualmente. (leccin 3)

RECUPERACIN COMPLETA
Fallo de Soporte y Recuperacin con Archivado Fallo Prdida de disco, fichero de datos, o corrupcin. Recuperacin Los ficheros de datos a restaurar deben estar offline. Restaurar solamente ficheros de datos perdidos o daados. No restaurar el fichero de control, redo logs, ficheros de password o parmetros. Recuperar ficheros de datos. Cuando se produce un fallo de soporte con una BD en modo archivelog y se quiere recuperar completamente al momento del fallo, se debe realizar lo siguiente: Un backup vlido conteniendo los ficheros de datos perdidos o daados despus que la BD fuese puesta enmodo Archivelog. Todos los logs archivados desde el backup deben ser restaurados en este momento. Pasos para la Recuperacin Si se cumplen los anteriores requerimientos para una recuperacin completa, entonces para recuperar: 1 Asegrese que los ficheros que van a ser sobrescritos no estn abiertos durante la restauracin. Se puede asegurar esto apagando la BD (todos los ficheros offline), o usando los comandos alter tablespace... offline o alter database datfile....offline. 2 Asegurarse que slo restaura los ficheros perdidos o daados desde el backup. Recuerde, que la restauracin de todos los ficheros volver la BD atrs en el tiempo. 3 Poner la BD modo montada o abierta. 4 Recuperar los ficheros de datos utilizando el comando recover.

Recuperacin con Archivado (Recuperacin Completa) Ventajas Solamente se necesitan restaurar los ficheros perdidos. Recupera todos los datos al momento del fallo. Tiempo de recuperacin = Tiempo de restaurar ficheros perdidos y aplicar todos los logs archivados. Desventajas Deben existir todos los logs archivados desde el backup que se est restaurando. Lo siguiente son las siguientes ventajas y desventajas de configurar su BD en modo archivelog.

Administracin de Bases de Datos

176
Ventajas: Slo se necesitan restaurar los ficheros perdidos o daados. Los datos validados no se pierden. Restaurar los ficheros, y aplicar los redo logs archivados, vuelve la BD al momento actual. El tiempo total de recuperacin es el tiempo empleado por el hardware en restaurar los ficheros necesarios y aplicar todos los redo logs archivados. La recuperacin puede realizarse mientras la BD est abierta (excepto los ficheros de datos de SYSTEM o aquellos que contienen segmentos de rollback online). Desventajas: Se deben tener todos los logs archivados desde el ltimo backup. Si hay alguno perdido, no se podra realizar una recuperacin completa, ya que todos los archivos necesitan ser aplicados en secuencia, esto es, log archivado 144, entonces el 145, despus el 146, y as sucesivamente.

Mtodos Completos de Recuperacin 1 2 3 4 Recuperacin de Bases de Bases cerrada: por el sistema, segmentos de ficheros de rollback, o la base de Datos completa. Recuperacin de Bases de Datos abiertas, con Base de Datos inicialmente abierta: Para ficheros perdidos. Recuperacin de Bases de Datos abiertas, con Base de Datos inicialmente cerrada: Por fallos hardware. Recuperacin de ficheros de datos sin backup.

Hay 4 mtodos diferentes de realizar una recuperacin completa: Mtodo 1: RECUPERACIN DE UNA BASE DE DATOS CERRADA Este mtodo de recuperacin generalmente utiliza los comandos recover database o recover datafile cuando: La Base de Datos no es necesaria 24 horas al da, 7 das a la semana. Los ficheros de recuperacin pertenecen al sistema o con segmentos de rollback en el tablespace. La Base de Datos completa, o la mayora de los ficheros de datos necesitan ser recuperados. Mtodo 2: RECUPERACIN DE UNA BASE DE DATOS ABIERTA, INICIALMENTE ABIERTA Este mtodo de recuperacin es generalmente utilizado cuando: Hay corrupcin de ficheros, perdida accidental de ficheros, o fallo de soporte, lo cual no provoca que la BD se tenga que parar. La Base de Datos es necesaria 24 horas al da, 7 das a la semana. El tiempo de apagado de la BD debe ser el mnimo. Los ficheros recuperados no pertenecen al SYSTEM o el tablespaces de rollback. Mtodo 3: RECUPERACIN DE UNA BASE DE DATOS ABIERTA, INICIALMENTE CERRADA Este mtodo de recuperacin es generalmente utilizado cuando: Un fallo de soporte o hardware ha provocado la cada del sistema. La Base de Datos es necesaria 24 horas al da, 7 das a la semana. El tiempo de apagado de la BD debe ser el mnimo. Los ficheros restaurados no pertenecen al sistema o a tablespace con segmentos de rollback. Mtodo 4: RECUPERACIN DE UNA FICHERO DE DATOS SIN BACKUP. Este mtodo de recuperacin es generalmente utilizado cuando: Un fallo de soporte o de usuario produce la prdida de un fichero de datos del que nunca se haba hecho backup. Todos los logs archivados existen ya que fueron creados. Los ficheros restaurados no pertenecen al sistema o al tablespace de rollback. Nota: Durante la recuperacin, todos los ficheros de logs archivados necesitan estar disponibles en disco para Oracle. Si estn en cinta de backup primero hay que restaurarlos.

SINTAXIS DE RECUPERACION
Recuperacin de Bases de Datos cerrada: SVRMGR> recover database; SVRMGR> recover datafile /disk1/data/dbf2.dbf SVRMGR> alter database recover database; Recuperacin de Bases de Datos abierta: SVRMGR> recover tablespace user_data; SVRMGR> recover datafile 2 SVRMGR> alter database recover database 2;

Administracin de Bases de Datos

177

Sintaxis de Recuperacin Uno de los siguientes comandos puede ser utilizado para recuperar la Base de Datos: recover [automatic] database Slo puede ser utilizado para recuperaciones de Bases de Datos cerrada. recover [automatic] tablespace <number> | <name> Slo puede ser usado para recuperar Bases de Datos abiertas. recover [automatic] datafile <number> | <name> Slo puede usarse para la recuperacin de Bases de Datos abiertas y cerradas. automatic automticamente aplica ficheros redo log y archivados.

Donde:

Nota: el comando alter database puede ser invocado delante del comando recover

RECUPERACIN UTILIZANDO FICHEROS LOGS ARCHIVADOS


Recuperacin Utilizando Logs Archivados Para cambiar la localizacin, usar el comando alter system archive log... Automticamente aplicar los ficheros redo log: - Activar set autorecovery on antes de comenzar la recuperacin del soporte. - Teclear auto cuando se pregunte por un fichero log archivado. - Usar el comando recover automatic ...

Durante la recuperacin, Oracle puede manualmente o automticamente aplicar los ficheros redo log archivados para reconstruir los ficheros de datos. Antes de ser aplicado un redo log, Oracle sugiere el nombre del fichero de log a aplicar. Restaurando Archivos en una Localizacin diferente Si los logs archivados no son restaurados en el directorio LOG_ARCHIVE_DEST, entonces Oracle necesitar ser notificado antes o durante la recuperacin, por La localizacin y nombre mediante el prompt de recover Specify log: {<RET>=suggested | filename | AUTO |CANCEL} Utilizando el comando alter system archive: SVRMGR> alter system archive log start to <new location>; Utilizando el comando recover from <location>: SVRMGR> recover from <new location> database;

Aplicacin Automtica de Ficheros Redo Log 1 Antes de iniciar la recuperacin desde el soporte, ejecutar la sentencia del Gestor del Servidor: SVRMGR> set autorecovery on 2 Introducir auto cuando se pregunte por el fichero redo log: SVRMGR> recover datafile 4; ORA-00279: change 30881012/02/97 17:00:14 needed for thread 1 ORA-00289: suggestion : /disk1/archive/arch_35.rdo ORA-00280: change 308810 for thread 1 is in sequence #35 Specify log: {<RET>=suggested | filename | AUTO |CANCEL } AUTO Log applied 3 Utilizar la opcin automatic del comando de recuperacin: SVRMGR> recover automatic datafile 4; Media recover complete.

Administracin de Bases de Datos

178

LOCALIZACION DE LOGS ARCHIVADOS PARA APLICAR


Para localizar ficheros log archivados, consutar V$ARCHIVED_LOG para todos los archivos o V$RECOVERY_LOG para los archivos necesarios durante la recuperacin: SVRMGR> select * from v$recovery_log;
THREAD# SEQUECE# TIME ARCHIVE_NAME ------------------- --------------------- ----------------------- -----------------------------------1 34 02-DEC-97 /disk1/archive/arch_34.rdo 1 43 04-DEC-97 /disk1/archive/arch_43.rdo 1 44 04-DEC-97 /disk1/archive/arch_44.rdo

SVRMGR> recover datafile 2; ORA-00279: change 28877212/02/97 17:00:14 needed for thread 1 ORA-00289: suggestion : /disk1/archive/arch_34.rdo ORA-00280: change 288772 for thread 1 is in sequence #34 Specify log: {<RET>=suggested | filename | AUTO |CANCEL } De la informacin superior, los logs archivados del 34 en adelante son necesarios para completar la recuperacion del fichero de datos 2.

Recuperacin Completa: Mtodo 1


Instance User Process Server Process PGA Data Buffer Cache SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

SMON

DBWR

PMON

CKPT

LGWR

ARCH

Open the database


146 Data File 1 Parameter File 146 Data File 2 146 Data File 3

2
146 Control File 1

Mount Instance
146
Redo Log

Restore Data File 2


(log Seq 144)

File 1 145
Redo Log

3 Apply Log Files

File 2 144 Archived Log File

Password File

Database

Cada uno de los cuatro mtodos ser trabajado ms adelante para determinar como recuperar la Base de Datos. Recuperacin Completa: Mtodo 1 (Base de Datos Cerrada) Nuevas investigaciones revelan que hay bloques corruptos en el disco 2 donde los ficheros de datos 2 esta almacenado. De la documentacin de la BD, se determina que el fichero de datos 2 es uno de los pertenecientes al tablespace system. Por lo tanto el mtodo 1 debe ser utilizado: 1 Restaurar el fichero del backup (el ms reciente si esta disponible): UNIX> !cp /disk/backup/df2.dbf /disk/data/ NT > !copy c:\backup\df2.dbf d:\data\

Iniciar la instance en modo montada y recuperar el fichero de datos: SVRMGR> startup mount pfile=initDB00.ora SVRMGR> recover datafile /disk/data/df2.dbf; or

Administracin de Bases de Datos

179
ORA-00279: change 148448 11/29/97 17:04:20 17:04:20 needed for tread ORA-00289: suggestion : /disk1/archive/arch_6.rdo ORA-00280: change 148448 for thread 1 is in sequence #6 Log applied. Media recovery complete. Actualizar el fichero de datos al momento del fallo, todos los logs archivados y redo logs sern aplicados. Cuando la recuperacin ha terminado, todos los ficheros de datos estn sincronizados. Abrir la BD. SVRMGR> alter database open;

3 4

Despus, notificar a los usuarios que la BD esta disponible para el uso, y reintroducir cualquier dato que no estuviese validado antes del fallo del sistema. Nota: Si hay muchos logs archivados para aplicar, utilizar la caracterstica automatic del comando recover o usar el siguiente comando del Gestor de Servidor: SVRMGR> set autorecovery on; SVRMGR> recover database; Durante este mtodo de recuperacin, la BD debe estar cerrada, as la BD entera es inaccesible a los usuarios durante el proceso de recuperacin. Si hay suficiente espacio disponible, restaurar los ficheros archivados de redo log en la localizacin especificada por LOG_ARCHIVE_DEST.

Recuperacin Completa: Mtodo 2


Instance User Process Server Process PGA Data Buffer Cache SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

SMON

DBWR

PMON

CKPT

LGWR

ARCH

1 Offline Data File 2

146 Data File 1 Parameter File 146 Data File 2 146 Data File 3

146 Control File 1

146
Redo Log

File 1 145
Redo Log

3 Apply Log Files

2 Restore Data File 2


(log Seq 144)

File 2 144 Archived Log File

4 Online Data File 2

Password File

Database

Recuperacin Completa: Mtodo 2 (Base de Datos Abierta, inicialmente Abierta) La formacin en DBA inmediatamente informa que no hay un fallo de soporte, sino que accidentalmente se ha borrado el fichero de datos nmero 2 utilizando comandos del sistema operativo. La BD actualmente esta abierta, as para determinar a que tablespace pertenece el fichero de datos, utilizar el comando siguiente: SQL> SELECT file_id#, file_name, tablespace, status FROM dba_data_files;
F# ----1 2 3 FILE_NAME ------------------------------------/disk1/data/system_01.dbf / disk1/data/df2.dbf / disk1/data/rbs01.dbf TABLESPACE ---------------------SYSTEM USER_DATA RBS STATUS ------------------------AVAILABLE AVAILABLE AVAILABLE

Administracin de Bases de Datos

180

Ya que el fichero de datos no es un fichero de datos de system o de un segmento de rollback, podemos utilizar el Mtodo 2. Determinemos si necesitamos tener el fichero de datos 3 offline (en este caso, Oracle ya tiene el fichero offline): SQL> SELECT d.file#, f#, d.name, d.status, h.status FROM v$datafile d, v$datafile_header h WHERE d.file# = h.file#;
F# --1 2 3 D.NAME D.STATUS H.STATUS --------------------------------------------------------------------------- ------------------/disk1/data/system_01.dbf SYSTEM ONLINE /disk2/data/df2.dbf RECOVER OFFLINE /disk1/data/rbs_01.dbf ONLINE ONLINE

Ya que el fichero esta offline, puede ser restaurado satisfactoriamente: para UNIX > !cp /disk1/backup/df2.dbf /disk2/data/ para NT > !copy c:\backup\df2.dbf d:\data\ Utilizar los comandos recover o alter database recover para aplicar los redo logs archivados para restaurar el fichero de datos. SVRMGR> recover datafile /disk2/backup/df2.dbf; SVRMGR> recover tablespace USER_DATA; o Cuando la recuperacin ha terminado, todos los ficheros de datos estn sincronizados. Poner el fichero de datos online: SVRMGR> alter database datafile /disk2/data/df2.dbf online; o SVRMGR> alter tablespace USER_DATA online;

nota: Oracle algunas veces detectar un problema de fichero y automticamente lo pondr offline. Antes de la recuperacin, siempre chequear el log de alertas para cualquier error y comprobar el estado de los ficheros los ficheros OFFLINE pueden requerir recuperacin. Cuando un tablespace es puesto offline, todos los ficheros de datos son puestos offline y no se puede acceder a ningn dato del tablespace. Para un tablespace de varios ficheros, cuando un fichero de datos es puesto offline, slo los datos contenidos dentro de este fichero de datos no son accesibles. El tablespace todava permanece disponible.

Recuperacin Completa: Mtodo 3


Instance User Process Server Process PGA Data Buffer Cache SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

SMON

DBWR

PMON

CKPT

LGWR

ARCH

3 Open Database

1 Mount the database 2 Offline Data File 2 4 Restore Data File 2


(log Seq 144) Parameter File

146 Data File 1 146 Data File 2 146 Data File 3

146 Control File 1

146
Redo Log

File 1 145
Redo Log

Apply Log Files

File 2 144 Archived Log File

6 Online Data File 2

Password File

Database

Recuperacin Completa: Mtodo 3 (Base de Datos Abierta, inicialmente cerrada) Investigando, se ha determinado que el fallo de soporte fue debido a un fallo de la controladora de disco, la cual afortunadamente slo controla el disco 2. Por el conocimiento de la BD, se sabe que el fichero de datos 2 no es de system o de un segmento de rollback, ni impedir a los usuarios obtener sus informes de final de mes.

Administracin de Bases de Datos

181
1 Montar la BD. No se abrir porque el fichero de datos 2 no puede ser abierto. SVRMGR> startup mount pfile=$HOME/initDB00.ora Database monted. Si no esta seguro del nmero de tablespace del fichero SVRMGR> SELECT d.file#, d.ts#, h.tablespace_name, d.name, h.error FROM v$datafile d, v$datafile_header h WHERE d.file# = h.file#; FILE# -----1 2 3 2 TS# -----0 1 2 TABLESPACE NAME ERROR ------------------------------------------------------------/disk1/data/system01.dbf /disk2/data/df2.dbf FILE NOT FOUND /disk1/data/rbs01.dbf

Si el fichero de datos no esta offline, la BD no se abrir. Por lo tanto el fichero deber ser puesto offline. Se ha consultado V$DATAFILE y determinado que el fichero esta online. El siguiente comando debe por lo tanto ser ejecutado: SVRMGR> alter database datafile /disk2/data/df2.dbf offline; Nota: El comando alter tablespace no puede ser usado aqu ya que la BD no est abierta todava.

La BD puede ahora ser abierta: SVRMGR> alter database open; Ahora estos usuarios pueden acceder al sistema, resultar el fichero. Ya que no puede ser restaurado en el disco daado 2, se restaurar sobre el disco 3: para UNIX > !cp /disk1/backup/df2.dbf /disk3/data/ para NT > !copy c:\backup\df2.dbf e:\data\ Oracle debe ahora ser informado de la nueva localizacin del fichero: SVRMGR> alter database rename file /disk2/data/df2.dbf to /disk3/data/df2.dbf; Cuando la BD est abierta y el tablespace recuperado es requerido, determinar el nombre del tablespace que tiene el fichero de datos: SQL> select file_id#, file_name, tablespace_name, status from dba_data_files;
F# FILE_NAME ------- ----------------------------------------1 /disk1/data/system_01.dbf 2 /disk3/data/df2.dbf 3 /disk1/data/rbs01.dbf TABLESPACE -----------------------SYSTEM USER_DATA RBS STATUS ----------------------AVAILABLE AVAILABLE AVAILABLE

. 5 Usar los comandos recover o alter database recover para comenzar a aplicar los redo logs archivados al fichero de datos restaurado. SVRMGR> recover datafile /disk3/backup/df2.dbf; o SVRMGR> recover tablespace USER_DATA; Cuando la recuperacin ha terminado, todos los ficheros de datos estn sincronizados. Poner el fichero de datos online: SVRMGR> alter database datafile /disk3/data/df2.dbf online; o SVRMGR> alter tablespace USER_DATA online; Nota: El comando alter tablespace offline debera ser usado si todos los ficheros de datos del tablespace necesitasen recuperacin. 7 Notificar a los usuarios que la BD esta disponible para el uso, y que deben reintroducir cualquier dato que no estuviese validado antes del fallo del sistema.

Administracin de Bases de Datos

182

Recuperacin Completa: Mtodo 4


Instance User Process Server Process PGA Data Buffer Cache SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

SMON

DBWR

PMON

CKPT

LGWR

ARCH

1 Offline Data File 2

146 Data File 1 Parameter File 146 Data File 2 146 Data File 3

146 Control File 1

146
Redo Log

File 1 145
Redo Log

Apply Log Files

2 Restore Data File 2


(log Seq 144)

File 2 144 Archived Log File

4 Online Data File 2

Password File

Database

Recuperacin Completa: Mtodo 4 (Prdida de fichero de datos sin backup) Como el fichero de datos 2 est perdido, inmediatamente hay que utilizar la cinta de backup. Sin embargo, durante la restauracin se recibe un error que indica que el fichero no esta en el backup. Ya que el fichero de datos 2 no es de system ni un segmento de rollback, y que tenemos todos los logs archivados de los 2 ltimos das, el Mtodo 4 es la mejor opcin: 1. Si la BD esta cerrada, entonces montar la BD, tener el fichero de datos (sin backup) offline, y abrir la BD. Esto permite a los usuarios, que no necesiten el tablespace TABLE_DATA, trabajar en el sistema. Si la BD esta abierta, poner el fichero de datos offline. Como variacin pondremos el tablespace offline, ya que slo contiene un fichero de datos. Nota: La opcin inmediata debe ser incluida para evitar que un checkpoint intente escribir en un fichero que no existe: SVRMGR> alter tablespace TABLE_DATA offline inmediate; Statement Processed. Se puede confirmar el estado de la recuperacin consultando V$RECOVER_FILE que chequea el estado del backup: SVRMGR> SELECT * FROM v$recover_file;
FILE# -----------7 ONLINE -------------OFFLINE ERROR -------------CHANGE# --------------248621 TIME ---------01-DEC-97

2.

Ahora es necesario recrear el fichero: SVRMGR> recover datafile create datafile /disk2/backup/df2.dbf As disk1/data/df2.dbf; Statement Processed. SVRMGR> SELECT * FROM v$recover_file;
FILE# -----------7 ONLINE -------------OFFLINE ERROR -------------CHANGE# --------------248621 TIME ---------01-DEC-97

3.

4. 5. 6.

Usar los comandos recover o alter database recover para comenzar a aplicar los redo logs archivados para recrear el fichero de datos: SVRMGR> recover tablespace TABLE_DATA; Para traer el fichero de datos al punto del fallo, todos los logs archivados y redo logs deben ser aplicados. Todos los ficheros de datos estn ahora sincronizados. Cuando la recuperacin ha terminado, poner el fichero de datos online: SVRMGR> alter tablespace TABLE_DATA online;

Todos los datos estan ahora recuperados. Incluir el fichero en la estrategia de backup y notificar a los usuarios que el tablespace esta preparado para ser usado otra vez.

Administracin de Bases de Datos

183
RECUPERACIN DESPUS DE UN FALLO HOT BACKUP
Los ficheros de datos no estn sincronizados si estando en modo Host Backup hay un fallo. Recuperar la BD utilizando alguno de los mtodos ya expuestos. Determinar que fichero(s) estaban en modo Hot Backup en el momento del fallo. Finalizar el backup de los ficheros de datos.

Fallo durante un Host Backup Durante un backup de BD abierta, se puede producir un error en el sistema como, un fallo de alimentacin, la BD esta parada. Si esto ocurre: Los ficheros del backup no sern utilizables si el sistema operativo no ha terminado el backup. Hay que realizar el backup de los ficheros otra vez. Los ficheros de la BD en modo hot backup no estarn sincronizados con la BD, ya que la cabecera esta frozen cuando el backup comienza. Recuperacin de Ficheros de un Hot Backup Hay dos mtodos para la recuperacin de este escenario: Recuperacin de los Ficheros de la BD utilizando un mtodo de los ya mencionados. Encontrar otra manera de sincronizar los ficheros. El Problema El comando alter tablespace no puede ser ejecutado hasta BD o se puede abrir hasta que los ficheros estn sincronizados u offline. Tener los ficheros offline no es vlido, ya que un alter tablespace ... end backup no puede ser realizado en ficheros de datos offline. La Solucin Si no se esta seguro del fichero que se necesita recuperar, o si esta en modo hot backup, consultar la vista V$BACKUP: SVRMGR> SELECT * FROM v$backup;
FILE# -----------1 2 3 4 STATUS CHANGE# TIME ---------------- -------------- --------------NOT ACTIVE 0 ACTIVE 228596 30-NOV-97 NOT ACTIVE 0 NOT ACTIVE 0

Esto indica que el fichero nmero 2 esta actualmente en modo hot backup. Para unfree la cabecera, simplemente ejecutar el comando: SVRMGR> alter database datafile 2 end backup; SVRMGR> SELECT * FROM v$backup;
FILE# -----------1 2 STATUS CHANGE# TIME ---------------- -------------- --------------NOT ACTIVE 0 ACTIVE 228596 30-NOV-97

Todo esto necesita ser realizado ahora, para abrir la BD para los usuarios: SVRMGR> alter database open; Nota: Esta opcin es mucho ms rpida que la recuperacin del fichero, ya que no son necesarios leer y aplicar los ficheros redo ya que los datos estn ya actualmente en el fichero de datos.

Administracin de Bases de Datos

184
BORRADO REDO LOGS CORRUPTOS
Utilizando la opcin unarchived: SQL> alter database clear unarchived logfile group 1; Utilizando la opcin unrecoverable datafile: SQL> alter database clear unarchived logfile group 1 Unrecoverable datafile;

Si un fichero redo log ha sido accidentalmente borrado o corrompido mientras la BD esta abierta, el alter database clear logfile puede ser usado para crear o borrar los ficheros sin que la BD necesite ser parada. Comando Alter databse clear unarchived logfile Este comando supera dos situaciones donde el borrado de reo logs no es posible: Si hay slo dos grupos de logs. El fichero redo log corrupto pertenece al grupo actual. Tambin proporciona un mtodo eficaz para la recreacin de ficheros de log daados y para el borrado de ficheros de log corruptos mientras la BD est abierta. Nota: Usar este comando cuidadosamente. Si no se produce el archivado del log, la recuperacin completa no es posible. Cuando se utilice este comando, considerar el realizar un backup inmediatamente despus. Un fichero de log actual necesario para una recuperacin no puede ser borrado. Borrando Logs Necesarios para Ficheros de Datos Offline Usar el comando alter database clear logfile ... unrecoverable datafile para borrar un fichero redo log, incluso si los ficheros de datos offline necesitan el log para recuperacin. Esta situacin es rara, aunque si ocurre hay dos aproximaciones: Restaurar todos los ficheros de datos y realizar una recuperacin incompleta previa al borrado del fichero de log. o Borrar el tablespace que contiene los ficheros de datos irrecuperables. Nota: Los ficheros de datos offline que necesitan este log no sern utilizables despus de este comando. Un log archivado probablemente no existir para el fichero de log borrado. Considerar hacer un backup inmediatamente despus de usar este comando.

PERDIDA DE UN FICHERO REDO LOG


Prdida de un fichero Redo Log: No es necesaria recuperacin. El archivado se produce utilizando un fcihero del grupo afectado. La prdida de todos los ficheros redo log de un grupo no debera ocurrir NUNCA si la BD es configurada apropiadamente utilizando ficheros redo log espejos.

Si los redo logs se han perdido o estn corruptos, la recuperacin al momento del fallo no ser posible. Sin embargo, no habr prdida de datos en las siguientes circunstancias: Los ficheros redo logs no son los actuales. Los redo log han sido archivados. La BD esta apropiadamente configurada con ficheros redo log espejo. Determinacin de Necesidades para la Recuperacin Se han empleado 4 horas en la creacin de la BD y se ha decidido poner la BD en modo archivelog. Se decide chequear la creacin de los logs archivados en el sistema. Se utiliza el comando alter system para cambiar los logs manualmente. Despus de unos segundos se recibe el siguiente mensaje de error: SVRMGR> alter system switch logfile; ORA-00470: LGWR process terminated with error Inmediatamente nos damos cuenta que un proceso en background ha terminado anormalmente y aborta la instance. No tenemos backup, y no queremos gastar otras 4 horas en recrear la BD. As, reiniciaremos la instance: SVRMGR> startup pfile=$HOME/initDB00.ora

Administracin de Bases de Datos

185
ORACLE instance started. . ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: /disk2/DATA/logla.dbf Para determinar la seriedad de la situacion de los redo log, se decide consultar V$LOG y se realizan tres importantes observaciones: SVRMGR> select * from v$log;
GROUP# THREAD#BYTES --------------------------------1 1 153600 2 1 153600 MEMBERS ------------1 1 ARC -----YES NO STATUS -------------UNUSED CURRENT FIRST_CHAN .. ---------------0 248720

El nmero FIRST_CHANGE es 0, indica un problema con el grupo de log 1. El grupo de log 2 es el grupo actual, por lo tanto el grupo 1 no esta activo. El fichero del grupo 1 ha sido archivado (ARC column= YES). Por lo tanto, no hemos perdido ninguna informacin de recuperacin. Intentamos localizar el fichero en el sistema operativo, pero no esta. Ya que la informacin no se ha perdido (slo el fichero de log), la recuperacin no es necesaria slo el fichero de log debe ser recreado.

RECREACIN DE REDO LOGS


Regeneracin de ficheros log: Encontrar una localizacin para crear el redo log. Borrar el log del grupo que contiene el fichero perdido. Recrear el log del grupo. Abrir la BD. Alternativamente, abrir la BD rpidamente, utilizar la sentencia clear logfile La BD no puede ser abierta hasta que los redo logs hayan sido recreados. Esto se puede hacer rpidamente usando los siguientes comandos: 1. Encontrar la localizacin de donde el fichero estuvo anteriormente situado: SVRMGR> select * from v$logfile;
GROUP# ----------1 2 STATUS ----------STALE MEMBER ------------/disk1/data/log2a.rdo /disk1/data/log1a.rdo

2. No se puede borrar un grupo de log, ya que siempre debe haber al menos dos grupos de log: SVRMGR> alter database drop logfile group 1; Alter database drop logfile group 1 * ORA-01567: dropping log 1 would leave less than 2 log files ORA-00312: online log 1 thread 1: /disk1/data/log1a.dbf Por lo tanto, se debe crear otro grupo temporal: SVRMGR> alter database add logfile group 1 /disk1/data/log3a.rdo size 150K; Statement processed. 3. Ahora se borra el grupo de log: SVRMGR> alter database drop logfile group 1; Statement processed. 4. Recrear el log: SVRMGR> alter database add logfile group 1 /disk1/data/log1a.rdo size 150K; Statement processed. 5. Borrar el otro grupo de log: SVRMGR> alter database drop logfile group 3; Statement processed.

6. Entonces, fsicamente borrar el fichero del sistema operativo. $ rm /disk1/data/log3a.rdo 7. Abrir la Base de Datos SVRMGR> alter database open, 8. Inmediatamente multiplexar todos los redo logs. Esto reducir la prdida de datos.

Administracin de Bases de Datos

186

Borrando Redo Logs Online Cuando ambos grupos de log tienen el mismo tamao, los pasos 2 al 7 pueden ser realizados con dos simples comandos: SVRMGR> !cp /disk1/data/log2a.rdo SVRMGR> alter database clear logfile /disk1/data/log1a.rdo;

INFORMACIN DEL ESTADO DE RECUPERACION


Visualizacin Informacin de Recuperacin V$RECOVERY_FILE_STATUS Ficheros que necesitan recuperacin Estado de la recuperacin. V$RECOVERY_STATUS Tiempo de inicio de la recuperacin. Secuencia numrica de Log necesaria. Estado del log anterior aplicado. La causa de la Recuperacin necesita la intervencin del usuario Hay dos vistas de la BD que proporcionan informacin de estado de los procesos de servidor y de usuario realizando una recuperacin de soporte: V$RECOVERY_STATUS: Contiene informacin sobre la recuperacin de la BD. V$RECOVERY_FILE_STATUS: Contiene informacin de cada fichero de datos requerido en la recuperacin. Nota: La informacin para estas vistas reside en la PGA del proceso servidor cuando el comando alter database recover es utilizado. Otras sesiones por lo tanto no pueden ver la informacin de recuperacin. Ejemplo de Estado de Recuperacin Del ejemplo previo donde se perdi el fichero de datos , ejecutaremos el comando de recuperacin mientras vemos la informacin de recuperacin: SVRMGR> alter database recover datafile 2;
Alter database recover datafile 2 * ORA-00279: change 14844811/29/97 17:04:20 needed for thread 1 ORA-00289: suggestion : /disk/archive/arch_6.rdo ORA_00280: change 148448 for thread 1 is in sequence #6

SVRMGR> select * from v$recovery_status;


RECOVERY --------------------29-NOV-97 1 row selected. THREAD -------------1 SEQ_NEEDED SCN_NEEDED TIME_NEED ------------------------ ----------------------- --------------------6 0 29-NOV-97 PREV_LOG ------------------NONE

SVRMGR> select * from v$recovery_file_status;


FILENUM FILENAME STATUS -------------- --------------------------------- ------------6 /disk/data/db3.dbf IN RECOVERY 1 row selected.

Realizando la recuperacin actual: SVRMGR> alter database recover automatic logfile /disk1/archive/arch_6.rdo;
ORA-00279: change 14844811/29/97 17:04:20 needed for thread ORA-00289: suggestion : /disk/archive/arch_6.rdo ORA_00280: change 148448 for thread 1 is in sequence #6 Log applied. . Media recovery complete.

SVRMGR> select * from v$recovery_status;


RECOVERY --------------------0 row selected. THREAD -------------SEQ_NEEDED SCN_NEEDED TIME_NEED ------------------------ ----------------------- --------------------PREV_LOG -------------------

SVRMGR> select * from v$recovery_file_status;


FILENUM FILENAME STATUS -------------- --------------------------------- ------------0 row selected.

Administracin de Bases de Datos

187
GESTOR DE RECUPERACION
Recuperacin Utilizando RMAN: Crear al menos un canal Montar la BD o los ficheros perdidos offline Para muchos ficheros, utilizar set newname Restaurar los ficheros perdidos Si se utiliza set newname o Copias de Imgenes en la restauracin, switch los ficheros. Recuperar los ficheros nuevos Abrir la BD o los ficheros de datos online Durante la restauracin , RMAN utiliza el catlogo de recuperacin o el fichero de control de la BD destino para decidir que backup completo o incremental, o copia de imagen utilizar. Recordar, para una BD en modo archivelog, slo los ficheros perdidos deben ser restaurados. La sintaxis de restore fue descrita en la leccin anterior. Nota: Usar la sintaxis set newname para restaurar los ficheros de datos a la nueva localizacin. Los backups incrementales con niveles mayores que 0 no son restaurados con el comando restore. Son aplicados a un backup de nivel 0 durante la recuperacin. Comando Set Newname Cuando se restauran muchos ficheros de datos a una nueva localizacin, utilizar el comando set newname: set newname for datafile <name> to <newname> El comando switch puede ser utilizado para hacer a los ficheros restaurados parte de la BD (actual) Switch datafile <name>; Nota: esta no es la sintaxis completa Utilizando el Gestor de Recuperacin para Recuperar Una vez que un fichero ha sido restaurado, necesita ser recuperado. RMAN opera de una forma similar a una recuperacin de una BD normal, excepto si tiene ms opciones que slo restaurar un fichero de datos y aplicar archivos (tales como aplicar incrementales) Sintaxis de RECOVER Un recover es usualmente ejecutado dentro de un comando run o create script: Recover <object>; donde: object database <until_clause> tablespace <name> datafile <name>;

Nota: Esta es la sintaxis completa. La BD destino debe estar montada o abierta para recuperacin. Consideraciones del Gestor de Recuperacin Cuando se restauran ficheros de una BD en modo archivelog, se necesitan tener cuidado con las siguientes situaciones: Los ficheros restaurados deben estar offline. Slo se puede restaurar utilizando RMAN si el backup fue tomado o registrado con RMAN.

Administracin de Bases de Datos

188
RECUPERACIN COMPLETA COM RMAN
Recuperacin Utilizando RMAN: Crear al menos un canal Montar la BD o los ficheros perdidos offline Para muchos ficheros, utilizar set newname Restaurar los ficheros perdidos Si se utiliza set newname o Copias de Imgenes en la restauracin, switch los ficheros. Recuperar los ficheros nuevos Abrir la BD o los ficheros de datos online (Utilizando el mtodo de la Base de Datos Abierta, Inicialmente Abierta) Nos damos cuenta que el disco 2 esta corrupto, la Base de Datos esta todava abierta. Ocasionalmente los usuarios se estn quejando de que no tienen acceso a la informacin del fichero de datos nmero 2: ORA-00376: file 2 cannot be read at this time ORA-01110: data file 2: /disk2/data/df2.dbf 1. Un canal debe ser primero creado ya que los ficheros sern modificados a nivel del OS, utilizando los comandos restore y recover. 2. Chequear la localizacin del fichero de datos en el disco 2. Ya que el fichero debe ser movido a un disco diferente, utilizar el comando siguiente: SQL> select file#, name, bytes from v$datafile;
FILE# NAME -------- -----------------------------------1 2 3 /disk1/data/system_01.dbf /disk1/data/df2.dbf /disk1/data/rbs01.dbf BYTES --------------31457280 10485760 5242880

3. Asegrese que el fichero est offline para que pueda ser restaurado satisfactoriamente utilizando el comando restore. 4. Ya que el fichero fue copiado en una nueva localizacin (utilizando set newname), el fichero debe ser declarado current notificando a Oracle la nueva localizacin del fichero usando el comando switch. 5. Usar el comando recover para iniciar la aplicacin de archivos, incrementales, acumulativos y redo logs al fichero restaurado, para sincronizar la BD. 6. Cuando la recuperacin ha terminado, poner el fichero de datos online. 7. Notificar a los usuarios que la BD esta disponible para el uso, y reintroducir cualquier datos que no fuese validado antes del error del sistema. Recuperacin con el Gestor de Backup (utilizando el mtodo de recuperacin de la BD Abierta, Inicialmente Abierta) Para restaurar una Base de Datos en modo archivelog utilizando el Gestor de Backup, seguir los siguientes pasos: 1. Conectar la BD destino utilizando el subsistema Gestor de Recuperacin del Gestor de Backup Oracle8. 2. Seleccionar el fichero de datos que necesitamos restaurar. Chequear la ventana de la derecha para estar seguro de que existen backups disponibles para el fichero de datos. 3. Para restaurar los ficheros de datos, seleccionar el elemento del men Recover Restore..... 4. En la caja de dilogo Restore: Datafile se debe introducir el nombre del canal. Seleccionar la opcin Recover object after restore si la recuperacin es necesaria. Utilizar Rename si los ficheros necesitan ser restaurados en localizaciones diferentes. 5. Pulsar el Botn Ok para ejecutar el fichero de comandos del Gestor de recuperacin (en forma de un comando run) del OEM Job Control System. Nota: El agente Inteligente debe estar corriendo en el nodo de la BD destino para que restore y recovery trabajen. 6. Cambiar manualmente a offline el fichero de datos antes de la restauracin y online despus de la recuperacin.

Administracin de Bases de Datos

189
RESUMEN La recuperacin completa recupera al momento del fallo. La recuperacin completa es posible para las BD, tablespaces, o ficheros de datos. La recuperacin de fallos de soporte slo restaura ficheros perdidos desde el backup. La recuperacin Hot Backup es rpida. Para recuperaciones rpidas, el comando switch en RMAN debe ser utilizado.

REFERENCIA RPIDA Contexto Referencia Parmetros Ninguno Vistas de V$BACKUP Rendimiento V$DATAFILE Dinmico V$DATAFILE_HEADER V$LOG V$LOGFILE V$RECOVER_FILE V$RECOVERY_STATUS V$RECOVERY_FILE_STATUS Vistas del DBA_DATA_FILES Diccionario de Datos Comandos ALTER DATABASE RENAME FILE ...; ALTER TABLESPACE <name> BEGIN BACKUP: ALTER TABLESPACE <name> END BACKUP; RECOVER DATABASE; RECOVER TABLESPACE <name>; RECOVER DATAFILE <name>; SET NEWNAME <name> TO <newname>; SWITCH DATAFILE <name>;

Administracin de Bases de Datos

190

Captulo N 16
RECUPERACIN INCOMPLETA CON ARCHIVADO
Objetivos: Identificar las situaciones de uso de una recuperacin incompleta para recuperar el sistema. Realizar una recuperacin incompleta de una BD. Recuperar despus de perder los logs actuales y activos. Usar RMAN en una recuperacin incompleta. Trabajar con una recuperacin en tiempo determinado.

VISTA GENERAL

Instance User Process Server Process PGA Looks Data Buffer SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

User Process

Server Process PGA

SMON

DBWR

PMON

CKPT

LGWR

ARCH

146 Data File 1 146 Data File 2 146 Data File 3

146 Control File 1

146
Redo Log

File 1 145
Redo Log

Parameter File

File 2

Password File

Archived Log File

Database

Esta leccin slo discute situaciones de recuperacin para BD en modo ARCHIVELOG que necesitan ser recuperadas al momento anterior del fallo Recuperacin Incompleta Reconstruccin de la BD a un momento anterior (antes del fallo). Nota: Esta situacin resulta en la prdida de datos de transacciones validadas despus del momento de la recuperacin. Estos datos tendrn que ser reintroducidos manualmente, as slo se realizar esta recuperacin cuando sea absolutamente necesario. La recuperacin incompleta puede ser por lo tanto difcil y costosa en tiempo. Realizando Recuperacin Incompleta Es necesario un backup vlido offline de todos los ficheros de la BD. Se necesitan todos los logs archivados desde el backup hasta el tiempo especfico de la recuperacin. Utilizar cuando un fallo grave ha ocurrido, tal como: - Un fallo completo de una operacin de recuperacin. - Tablas importantes de la BD han sido borradas accidentalmente.

Administracin de Bases de Datos

191

RAZONES PARA UNA RECUPERACIN INCOMPLETA Error de usuario. Fallo de una recuperacin completa por prdida de un log archivado. Recuperacin utilizando un fichero de control de backup. Prdida de todos los redo logs no archivados y ficheros de datos.

Causas Comunes Error de Usuario: Por ejemplo, un usuario borra una tabla equivocada, valida datos modificados con una clusula where incorrecta, y as sucesivamente. Archivos Perdidos: Por ejemplo, una operacin completa de recuperacin falla debido a un log archivado errneo o perdido. La recuperacin slo puede ser completada a un momento en el pasado, anterior a la aplicacin del log archivado. Prdida del fichero de control: Por ejemplo, no hay un espejo del fichero de control, no se sabe la estructura de la BD, pero hay un backup de una copia binaria vieja. Prdida de redo logs: Por ejemplo, no hay espejos de redo logs y se ha perdido un redo log antes de ser archivado, junto con un fichero de datos. La recuperacin no puede continuar aplicando el redo log perdido. Bases de Datos Distribuidas: La recuperacin incompleta de una localizacin requiere una recuperacin incompleta de todas las otras Bases de Datos en la red distribuida.

RECUPERACIN CON ARCHIVADO (Recuperacin Incompleta)


Ventajas Recuperacin al momento anterior al fallo. Proporciona recuperaciones en situaciones donde una recuperacin completa no es posible. Desventajas La BD vuelve atrs en tiempo (prdida de datos) Tiempo de recuperacin = Tiempo de Backup + Tiempo de Restauracin de todos los ficheros de datos + aplicar logs archivados necesarios. Ventajas Recuperacin al momento anterior al fallo. Esto proporciona recuperacin de las tablas borradas o con datos cambiados en tablas importantes cuando se notifica inmediatamente el fallo. Proporciona recuperacin cuando los logs archivados estn perdidos o un fichero de redo logs actual esta daado. Desventajas Durante la recuperacin, la BD es retrocedida en el tiempo, as los datos posteriores a ste estn perdidos y deben ser reintroducidos. El tiempo de la recuperacin total es el tiempo empleado por el hardware en realizar un backup de la BD existente, restaurar todos los ficheros de datos y aplicar redo logs archivados.

TIPOS DE RECUPERACIONES INCOMPLETAS


Recuperaciones basadas en el tiempo. Recuperaciones basadas en cancelaciones. Recuperaciones utilizando un fichero de control de backup. Recuperaciones basadas en cambios (SCNs)

Este tipo de Recuperacin Incompleta usa el comando recover database

Administracin de Bases de Datos

192
Recuperaciones Basada en el Tiempo
Este mtodo de recuperacin termina despus que la BD haya validado todos los cambios en un punto especfico del tiempo. Usar esta opcin cuando: Cambios de datos no deseados fueron realizados o tablas importantes fueron borradas, y el tiempo de aproximacin al momento del error es conocido. El tiempo de recuperacin y la perdida de datos ser mnima si el error es notificado inmediatamente. Programas bien probados, seguridad, y procedimientos deberan prevenir la necesidad de este tipo de recuperacin. El tiempo aproximado de un redo log online no espejo llegue a ser corrupto. Hacer espejos de los logs debera prevenir la necesidad de este tipo de recuperacin.

Recuperacin Basada en Cancelacin


Este mtodo de recuperacin termina introduciendo Cancel en el prompt (en lugar del nombre del fichero de log). Usar esta opcin cuando: Un fichero redo log actual o grupo esta daado y no esta disponible para recuperacin. Los ficheros espejo deberan normalmente prevenir la necesidad de este tipo de recuperacin. Los log archivados necesarios para la recuperacin estn perdidos. Frecuentemente los backups y la duplicidad de archivos deberan prevenir la necesidad de este tipo de recuperacin.

Recuperacin usando un Backup del Fichero de Control


Este mtodo de recuperacin termina cuando el mtodo especfico de recuperacin (cancelacin, tiempo, o cambio) ha terminado o el fichero de control est recuperado. Se debe especificar en el comando recover database que una copia vieja del fichero de control sera usada para la recuperacin. Usar esta aproximacin cuando: Todos los ficheros de control estn perdidos, el fichero de control no puede ser recreado, y un backup binario del fichero de control existe. El espejo del fichero de control (en discos diferentes) y guardar una versin texto actual de la sentencia create controlfile y reduce las posibilidades de utilizar este mtodo. Restaurando una BD, con una estructura diferente a la BD actual, en un punto de tiempo anterior.

Recuperacin Basada en Cambios


Este mtodo de recuperacin termina despus que la BD haya validado todos los cambios de un especfico system change number (SCN). Usar este aproximacin cuando la recuperacin sea de BD en un entorno distribuido. Este mtodo no es descrito en este curso.

COMANDO RECOVER
Sintaxis del Comando Recover Recuperacin de una Base de Datos hasta una cancelacin: SVRMGR> recover database until cancel; Recuperacin de una Base de Datos hasta un tiempo: SVRMGR> recover database until time 1997-12-04:14:22:03; Recuperacin usando un fichero de control de backup: SVRMGR> recover database until time 1997-12-04:14:22:03 using backup controlfile; El siguiente comando es utilizado para realizar una ejecucin de una recuperacin incompleta: recover [automatic] database <Option> donde: automatic Option automticamente aplicados a archivos redo log archivados. until time YYYY-MM-DD:HH:MI:SS; until cancel; until scn <integer>; using backup control file;

Nota: La sintaxis de alter database recover puede ser usada en su lugar. Automticamente aplicar ficheros redo log durante la recuperacin, se puede usar el comando del Gestor de Servidor set autorecovery on, introducir AUTO en el prompt de la recuperacin, usar el comando SQL recover automatic.

Administracin de Bases de Datos

193

PASOS DE UNA RECUPERACION 1) 2) 3) 4) 5) 6) Apagar y hacer un backup de la Base de Datos. Restaurar todos los ficheros de datos. No restaurar el fichero de control, los redo logs, los ficheros de password o de parmetros. Montar la BD y recuperar los ficheros de datos antes del momento del fallo. Abrir la BD con resetlogs Realizar un backup de la BD cerrada.

Recuperacin Incompleta Cuando un fallo ocurre y requiere una recuperacin incompleta (slo con una BD en modo archivelog), se debe tener lo siguiente para recuperar: Un backup vlido offline u online que contenga todos los ficheros de datos. Todos los logs archivados, desde el backup restaurado, hasta antes del momento del fallo. Pasos de Recuperacin Requerimientos para una recuperacin incompleta: 1 Realizar un backup completo cerrado de la BD existente 2 Asegrese que la BD esta parada, ya que todos los ficheros de datos sern restaurados del backup anterior (incluyendo ficheros de datos del sistema). 3 Restaurar todos los ficheros de datos y retroceder la BD en el tiempo. 4 Poner la BD en modo montada y recuperar la BD. 5 Abrir la BD utilizando la opcin resetlogs y asegurarse que el problema de la BD ha sido eliminado (sino, recuperar otra vez). 6 Realizar un backup competo de la BD, incluyendo archivados.

LNEAS GENERALES DE UNA RECUPERACIN INCOMPLETA


Seguir todos los pasos porque la mayora de los errores ocurren con este tipo de recuperacin. Hacer un backup completo de la BD antes y despus de la recuperacin para poder realizar futuras recuperaciones. Siempre chequear si la recuperacin es correcta. Salvar el fichero de control regularmente. Salvar logs archivados.

Es importante seguir todos los pasos de la recuperacin, ya que la mayora de los problemas con la recuperacin son causados por errores el DBA durante la recuperacin incimpleta. Realizar un backup completo de la BD cerrada (incluyendo ficheros de control y redo logs) antes de comenzar una recuperacin incompleta. Esto previene de dos maneras: - Recuperacin de un error: Si la recuperacin falla (por ejemplo, recuperar en un punto anterior al deseado), redo logs y ficheros de control no pueden ser usados para la siguiente recuperacin, a menos que haya un backup de estos ficheros. - Ahorrar tiempo si la recuperacin falla. En esta situacin, se pueden restaurar los ficheros de datos desde el nuevo backup, mejor que del backup anterior que necesita aplicacin de los archivados. Nota: Si un backup completo no es realizado, al menos archivar los redo logs actuales (alter system archive log current) y el fichero de control (alter database backup controlfile to <location>). Realizar un backup completo cerrado despus de la recuperacin exitosa. Esto previene complicaciones si la recuperacin es necesaria antes del siguiente backup programado. Siempre verificar que los fallos han sido solucionados antes de permitir a los usuarios volver al sistema, en caso de recuperacin fallida realizarla otra vez. - Esto puede ocurrir si un usuario notifica que la tabla fue borrada a las 11:45a.m. - La recuperacin fue a las 11:44a.m (antes de que la tabla fuese borrada), se sabe que despus de la recuperacin la tabla no estaba alli. - Se descubre que el reloj del usuario est cinco minutos adelantado. La restauracin se debera haber hecho a los 11:39a.m. Hacer un backup del fichero de control siempre que la estructura de la BD cambie, ya que un backup de un fichero de control debe ser usado si la estructura de la BD actual es diferente de la estructura en el tiempo que se quiere recuperar.

Administracin de Bases de Datos

194
Despus de una recuperacin incompleta, la BD debe ser abierta con la opcin resetlogs para sincronizar todos los ficheros de la BD. Con este comando, si hay ficheros de redo log perdidos, son automticamente recreados. Realizar un backup (y despus borrar) los logs archivados del sistema para prevenir mezclas de archivos de diferentes incarnations de Bases de Datos. - Por ejemplo una BD con secuencia de log 144 tiene logs archivados desde arch_120.rdo hasta arch_143.rdo. - Despus de realizar una recuperacin incompleta, una nueva incarnation BD es creada, con una secuencia de log a 0. - Los logs archivados arch_120.rdo a arch_143.rdo son ahora parte de la vieja incarnation BD. - Despus de 120 cambios de log, el log archivado arch_120.rdo ser sobrescrito, y ser salvado con los otros archivos (incluyendo los logs viejos archivados arch_121.rdo al arch_143.rdo). - Ms tarde, si la recuperacin necesita el arch_124.rdo, es necesario asegurar que el log archivado restaurado del backup es el correcto para la incarnation de la BD, de otra manera se producir un error. La actividad transaccional slo puede realizar un roll forward a un tiempo deseado, no regresa a ese tiempo. Esta es la razn por la que todos los ficheros restaurados para la BD deben ser vueltos atrs en el tiempo. Un fallo al restaurar todos los ficheros de datos (desincronizacin) impedir que la BD sea abierta. El comando del Gestor del Servidor recover database es normalmente ms fcil de usar que alter database.

EL LOG DE ALERTA Chequeando el Log de Alerta Chequear antes y despus de la recuperacin. Salvar y limpiar frecuentemente. La informacin es grabada durante la recuperacin. La informacin es almacenada en BACKGRUND_DUMP_DEST. El nombre del fichero es alert_<sid>.log Este chequeo es til para encontrar errores de recuperacin, sugerencias y SCN.

Durante la recuperacin, la informacin del proceso es almacenada en el log de alerta. Este fichero debera ser siempre verificado antes y despus de la recuperacin. Por ejemplo: $ vi /disk1/BDUMP/alert_DB00.log Media Recovery Log ORA-279 RECOVER database until time 1997. Tue Dec 09 11:55:13 1997 ALTER DATABASE RECOVER CONTINUE DEFAULT Media Recovery Log /disk1/archive/arch_34.rdo Incomplete recovery done UNTIL CHANGE 309121 Media Recovery Complete Completed: ALTER DATABASE RECOVER COTINUE DEFAULT Tue Dec 09 11:55:13 1997 Alter database open resetlogs

RECUPERACIN BASADA EN TIEMPO


Recuperacin Basada en Tiempo Escenario: La fecha actual es 12 PM del 9-DIC-97 Su Instructor acaba de anunciar que ha borrado la tabla de empleados (EMP). La tabla fue borrada sobre las 11:45 AM La actividad de la BD es mnima porque la mayora del personal est en una reunin. La tabla debe ser recuperada.

Administracin de Bases de Datos

195

RECUPERACIN INCOMPLETA USANDO HASTA FECHA


RECUPERACIN Until Time Instance User Process Server Process PGA Looks Data Buffer SGA Shared Pool Large Pool Redo Log Buffer Shared SQL & PL SQL Data Dict. Cache

User Process

Server Process PGA

SMON

DBWR

PMON

CKPT

LGWR

ARCH

6 1 Shutdown and backup the database 2 Mount database


1 Data File 1

Open Database Resetlogs


1 Control Files 1
Redo Log

File 1 1
Redo Log

3 Restore all Parameter Data Files (log Seq 144) File

1 Data Emp File 2 1 Data File 3

5 File 2 144 Archived Log File

7 Backup database

Password File

Database

Inmediatamente parar la BD y comenzar la recuperacin. Ya que el momento aproximado del fallo es conocido y la estructura de la BD no ha cambiado desde las 11:44 AM, podremos usar el mtodo until time: Leyenda Nmero 1 2 3 Explicacin Si la Base de Datos esta abierta, pararla con las opciones normal o inmediate. Montar la Base de Datos Restaurar todos los ficheros de datos desde el backup (del ms reciente si es posible): UNIX > !cp /disk1/backup/*.dbf /disk1/data/ UNIX > !cp /disk2/backup/*.dbf /disk2/data/ UNIX > NT > !copy c:\backup\*.dbf c:\data\ NT > !copy d:\backup\*.dbf d:\data\ NT > Puede ser necesario restaurar los logs archivados. Si hay espacio disponible suficiente, restaurar en la localizacin LOG_ARCHIVE_DEST o usar los comandos SQL alter system archive log start to <location> o set logsource <location> para cambiar la localizacin. Recuperar la Base de Datos: SVRMGR> recover database until time 1997-12-09:11:44:00; ORA-00279: change 148448 11/29/97 17:04:20 needed for thread ORA-00289: suggestion : /disk1/archive/arch_6.rdo ORA-00280: change 148448 for thread 1 is in sequence #6 Log applied. media recovery complete. Sincronizar los ficheros de datos con los ficheros de control y redo logs, abrir la BD utilizando la opcin resetlogs: SVRMGR> alter database open resetlogs; Statement proceseed. SVRMGR> archive log list; ..

Administracin de Bases de Datos

196
(cont..) oldest online log sequence 0 next log sequence to archive 1 current log sequence 1 Antes de realizar un backup completo de la BD cerrada, consultar la tabla EMP para asegurar que existe. Si se obtine el siguiente error: ORA-00942: table or view does not exits Then locate the schema for the table using: SVRMGR> select table_name, owner from dba_tales where table_name=EMP
TABLE_NAME OWNER ----------------------- -----------------------EMP PETER 1 row selected.

Nota:

Si no hay filas seleccionadas, entonces la tabla no ha sido restaurada correctamente. Es necesario recuperar en un punto del tiempo anterior, de otra forma realizar el backup. Cuando la recuperacin acaba y el backup est terminado, notificar a los usuarios que la BD esta disponible para su uso y que cualquier data introducido despus de la hora de recuperacin (11:44 a.m) necesitar ser reintroducido.

RECUPERACIN INCOMPLETA USANDO Hasta Cancel


Recuperacin Basada en Cancelacin Escenario: La fecha actual es 12 PM del 9-DIC-97 Su Instructor ha borrado la tabla de empleados (EMP) mientras intentaba arreglar los bloques errneos. Los ficheros de Log existen en el disco conteniendo el fichero de datos de empleados. La tabla fue borrada sobre las 11:45 AM Nos enteramos de la corrupcin de bloques de la tabla EMP por un error de disco. Ya que los redo logs estn contenidos en el mismo disco, decidimos verificar el estado de los redo logs y de los logs archivados: SVRMGR> select * from v$logfile;
GROUP# STATUS -----------------------2 3 G# ---1 2 MEMBER ---------------------------------------------/disk1/data/log2a.rdo /disk1/data/log1a.rdo MEMBERS ------------1 1 ARC ----NO NO STATUS ------------CURRENT INACTIVE . FIRST_TIME --------------------97-12-09:11:55 97-12-09:11:34

SVRMGR> select * from v$logfile;


SEQ# BYTES ------------------ 49 153600 48 153600 . . .

Recuperacin Basada en Cancelacin Suposiciones: Los Redo logs no estn multiplexados. Uno de los redo logs online est perdido. El redo log contiene informacin de las 11:34 AM Veintisis minutos de datos han sido perdidos. Los usuarios pueden recuperar sus datos. Despus de la bsqueda en el directorio /disk1/data, notamos que el redo log log2a.rdo no puede ser localizado y no ha sido archivado. Por lo tanto no podemos recuperar en este punto. Consultando V$LOG_HISTORY confirmamos la ausencia de la secuencia de log 48 (log2a.rdo): SVRMGR> select * from v$log_history;
RECID ----------1 47 STAMP ---------------- . 318531466 . 319512889 . FIRST_CHANGE FIRST_TIME ----------------------- ---------------------88330 97-11-28:12:43 309067 97-12-09:11:26

Administracin de Bases de Datos

197

Ya que este es un sistema OLTP, la salida de V$LOG muestra un trabajo extra de 10 minutos que se perder si la BD es recuperada antes de aplicar log2a.rdo. Los usuarios no estn felices de perder su trabajo, pero pueden recuperarlo. Por lo tanto se debe comenzar restaurando la BD: 1 Apagar la Base de Datos. 2 Ya tenemos un backup vlido, se monta la instance. 3 Recuperar todos los ficheros de datos del backup ms reciente. 4 Recuperar la BD hasta la secuencia de log 48: SVRMGR> recover database until cancel ORA-00279: change 148448 12/02/97 12:45:20 needed for thread ORA-00289: suggestion : /disk1/archive/arch_34.rdo ORA-00280: change 148448 for thread 1 is in sequence #34 Log applied. ORA-00279: change 309012 12/02/97 11:33:56 needed for thread 1 ORA-00289: suggestion : /disk1/archive/arch_48.rdo ORA-00280: change 309012 for thread 1 is in sequence #48 Specifi log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. 5 6 7 Abrir la BD utilizando la opcin resetlogs. Verificar que la tabla EMP existe realizando un simple select. Cuando la recuperacin ha tenido xito, notificar a los usuarios que la BD esta disponible para su uso, y que cualquier dato introducido despus del momento de recuperacin (11:43 am) necesitar ser reintroducido.

RECUPERACIN INCOMPLETA DEL FICHERO CONTROL del BACKUP


Escenario: La fecha actual es 12 PM del 9-DIC-97 Su Instructor ha borrado el tablespace de empleados entero, no la tabla. El error ocurri sobre las 11:45 am. Muchos registros de empleados fueron actualizados esta maana antes de las 11:00 am. Los backups se realizan cada noche. 1 2 El formador borra la tabla EMP con este comando: SVRMGR> drop tablespace emp_ts including contents; Inmediatamente se pide a los usuarios que salgan y guarden los registros de datos introducidos en los ltimos 15 minutos. Mientras esperamos a que todos los usuarios salgan y las sesiones sobrantes son canceladas, colocar la BD en modo restringido para prevenir posteriores accesos: SVRMGR> alter system enable restricted session; Durante la investigacin, se localiza un fichero de control binario del backup de la ltima noche. Ya que el fichero de control actual ha sido reemplazado, cuidadosamente tomar la informacin de la estructura de la BD por si fuese necesaria: SVRMGR> select * from v$log;
GROUP# ------------1 2 . .. .. .. SEQ# BYTES -----------------61 153600 60 153600 . . . . ARC ------NO NO STATUS --------------- .. CURRENT . INACTIVE . . FIRST_NAME ---------------------97-12-09:11:55 97-12-09:11:34

Administracin de Bases de Datos

198
RECUPERACIN INCOMPLETA DEL FICHERO CONTROL del BACKUP
Suposiciones: El backup de la ltima noche contiene ficheros de datos y ficheros de control necesarios para la recuperacin. El tablespace de empleados tiene un fichero de datos. El nmero de secuencia del log actual es 61. Se confirma que el tablespace fue borrado a las 11:44:54 am del 9-DIC-97. El fichero de datos 4 es offline.

SVRMGR> select tablespace_name, file_name from dba_data_files where tablespace_name=EMP_TS;


TABLESPACE_NAME FILE_NAME -------------------------------- ---------------------------------OEM_TS /disk1/data/emp_01.dbf

Confirmar el momento del error mediante el log de alerta: UNIX > vi /disk1/BDUMP/alert*.log o NT > notepad c:\BDUMP\alert_DB00.log . Tue Dec 09:44:54 1997 Drop tablespace oem_ts including contents . Apagar la BD, salvar los ficheros de control, entonces restaurar todos los ficheros de datos y ficheros de control en un momento donde el tablespace existiese. Despus intentar abrir la BD, el error siguiente nos indicar que los redo logs y los ficheros de control no estn sincronizados: ORA-00314: log 1 of thread 1, expected sequence # doesnt match ORA-00312: online log 1 thread 1: /disk1/data/log1a.rdo Verificar si hay algn fichero de datos offline y ponerlo online, ya que cualquier fichero offline puede ser irrecuperable despus de una recuperacin: SVRMGR> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME ------- ---------------- ---------------- ---------------- ----------------4 OFFLINE 288772 02-DEC-99

SVRMGR> alter database datafile 4 online; 7 Realizar la recuperacin: SVRMGR> recover database until time 1997-12-09:11:44:00 using backup controlfile; .. media recovery complete. Nota: Si el siguiente error aparece en vez de Media recovery complete, indica que los ficheros de datos necesitan ser restaurados de un backup anterior, o es necesaria ms recuperacin (imposible aqu). ORA-01152: file 7 was not restored from a sufficiently old backup ORA-01110: datafile 7: /disk1/data/newfile01.dbf 8 Para sincronizar los ficheros de datos con los ficheros de control y redo logs, abrir la BD con la opcin resetlogs: 9 Verificar que la tabla EMP existe realizando un simple select. 10 Cuando la recuperacin ha tenido xito, notificar a los usuarios que la BD esta disponible para su uso, y que cualquier dato introducido despus de las 11:44 am necesitar ser reintroducido.

Administracin de Bases de Datos

199

PERDIDAS DE REDO LOGS ONLINE ACTUALES


Si la Base de Datos est ABIERTA: Determinar el grupo de log actual. Usar el comando clear logfile Abrir la Base de Datos utilizando resetlogs. Realizar un backup completo de la BD. Hay dos posibilidades de recuperacin cuando el redo log online actual se ha perdido: La Base de Datos esta abierta, pero es estado colgada. La Base de Datos esta cerrada debido a un fallo de soporte o la terminacin de un proceso en background.

Base de Datos Abierta, pero en Estado Colgada Si la BD esta abierta, el fichero puede estar corructo o accidentalmente borrado. Usar los pasos siguientes para retificar el problema de la BD colgada: 1 Determinar que grupo es el actual: SVRMGR> select * from v$log;
GROUP#. SEQ# ---------------------1 .... 61 2 .... 60 BYTES .. ---------------- ...... 153600 ..... 153600 ..... ARC STATUS ------ ---------------- .... NO CURRENT . NO INACTIVE .... . FIRST_TIME -----------------------97-12-09:11:55 97-12-09:11:34

2 3 4

Borrar el fichero de log actual utilizando el siguiente comando: SVRMGR> alter database clear unarchivied logfile group 1; La BD debera estar operacional, ya que el fichero de log ser sobrescrito en caso de corrupcin, o recreado en caso de fichero perdido. Si la BD falla debido a un error de soporte antes del siguiente backup, entonces la recuperacin incompleta ser necesaria ya que la informacin de recuperacin ha sido borrada. Se debera por lo tanto inmediatamente realizar un backup completo cerrado.

PERDIDAS DE REDO LOGS ONLINE ACTUALES


Si la Base de Datos est CERRADA: Intentar abrir la BD. Encontrar el nmero de sequencia del log actual. Recuperar la BD hasta la cancelacin. Abrir la BD usando resetlogs. Realizar un backup completo de la BD. Bases de Datos Cerrada a causa de un Fallo Si la BD esta cerrada, un fallo de soporte puede ocurrir o un proceso en background puede haber terminado. Usar los pasos siguientes para retificar la situacin: 1 Al intentar abrir la BD notificar inmediatamente el grupo de redo log actual mediante el siguiente mensaje: Database mounted. ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: /disk1/archive/log2a.rdo ORA-27037: unable to obtain file status SVR4 Error: 2: No such file or directory Additional information: 3 Ya que el grupo de log 2 es el grupo de log actual, ste no habr sido archivado. El comando clear logfile no podr usarse ya que: SVRMGR> alter database clear unarchivied logfile group 2; ORA-01624: log 2 needed for crash recovery of thread 1 ORA-00312: online log 2 thread 1: /disk1/archive/log2a.rdo La recuperacin incompleta es necesaria. Primero se debe tomar nota del nmero de secuencia de log actual: SVRMGR> select * from v$log;
GROUP#. SEQ# ---------------------1 .... 61 2 .... 60 BYTES .. ---------------- ...... 153600 ..... 153600 ..... ARC STATUS ------ ---------------- .... NO CURRENT . NO INACTIVE .... . FIRST_TIME -----------------------97-12-09:11:55 97-12-09:11:34

Administracin de Bases de Datos

200
4 Restaurar todos los ficheros de datos de un backup previo y utilizar la recuperacin hasta la cancelacin para parar antes de que el redo log 61 sea aplicado. SVRMGR> recover database until cancel; ORA-00279: change 309012 12/02/97 19:50:14 needed for thread 1 ORA-00289: suggestion : /disk1/archive/arch_46.rdo ORA-00280: change 309043 for thread 1 is in sequence #46 Specifi log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 309141 12/02/97 19:50:14 needed for thread 1 ORA-00289: suggestion : /disk1/archive/arch_61.rdo ORA-00280: change 309043 for thread 1 is in sequence #61 ORA-00278: log file no longer needed for this recovery Specifi log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. 5 6 Abrir la BD utilizando la opcin resetlogs. La BD debera ser operacional, ya que los ficheros de log perdidos sern recreados. Nota: Si los ficheros de log necesarios son recreados en otro disco debido a un fallo de soporte, usar los comandos alter database drop logfile group y alter database add log group para manualmente crear los ficheros de log. Ya que se ha realizado una recuperacin incompleta, la BD debera ser salvada ahora.

RECUPERACIN A TRAVS DE RESETLOGS


Utilizar este proceso slo cuando: La versin de la BD es 7.3.3 y posterior. No hay backup despus de resetlogs No hay backup anterior a reserlogs Los ficheros de control existen antes y despus de resetlogs. Logs archivados y redo logs son accesibles. El log de alerta contiene informacin resetlog. Cuando Usar este Proceso Realizando backups despus de cada recuperacin incompleta, este procedimiento nunca debera ser realizado. Sin embargo, grandes BD con disponibilidad de 24 horas al da, 7 das a la semana, requieren reducir el tiempo de recuperacin. Por lo tanto, se realizan backups de la BD abierta despus de la recuperacin, y si un fallo de soporte ocurriese antes de que el backup terminase, esta recuperacin podra ser necesaria. Prerrequisitos Para utilizar este mtodo, se deben seguir los siguientes criterios: La BD debe ser Oracle RDBMS versin 7.3.3 (o superior) as como los resetlogs. No hay un backup completo de la BD cerrada o abierta despus de resetlogs. No hay un backup completo de la BD cerrada o abierta anterior a resetlogs. Existen ficheros de control antes y despus de resetlogs. Todos los logs archivados y redo logs online estn presentes para la recuperacin. El log de alerta contiene informacin de anteriores resetlogs. Procedimiento Seguir cada paso en este procedimiento, sin saltar ninguno. Si no est seguro contactar con soporte de Oracle: 1 Copiar los ficheros de control de la BD actual a otra localizacin. 2 Restaurar los ficheros de datos y ficheros de control del backup antes de la ltima operacin de resetlogs. 3 Montar la BD. 4 Del log de alerta, localizar el nmero de cambio calculado al final de la operacin resetlogs previa. .... Incomplete recovery done UNTIL CHANGE 309121 Media Recovery Complece . 5 Recuperar la BD hasta el nmero de cambio localizado anteriormente: SVRMGR> recover database until change 309121 using backup controlfile; ORA-00279: change 309043 12/02/97 14:50:14 needed for thread 1

Administracin de Bases de Datos

201
ORA-00289: suggestion : /home/disk1/user4/archive/arch_46.rdo ORA-00280: change 309043 for thread 1 is in sequence #46 Specifi log: {<RET>=suggested | filename | AUTO | CANCEL} Auto .. Media Recovery Complete. 6 7 8 9 10 11 12 13 Parar la BD usando la opcin normal. Restaurar los ficheros de control actuales de la localizacin especificada en el paso 1. Montar la BD. Recuperar la BD usando el comando de nuestra eleccin. De la transpariencia, un fallo de soporte probablemente producir una recuperacin completa. Abrir la BD. Validar los datos que se han intentado recuperar. Consultar V$LOG para asegurar la recuperacin al correcto nmero de secuencia de log. Salvar la BD para prevenir la recuperacin por reset logs

RECUPERACIN TABLESPACE EN UN MOMENTO CONCRETO (TSPITR)


Chequear dependencias y restricciones. Preparar la BD primaria para TSPITR. Crear una copia de la BD (clone). Recuperar la BD (clone). Exportar objetos desde la BD (clone). Borrar objetos en la BD primaria. Importar objetos en la BD primaria.

Esta seccin es una introduccin al concepto de TSPITR, no un conocimiento a bajo nivel. La utilizacin de este mtodo de recuperacin debera ser escasa y utilizado junto al Soporte Oracle. Si procedimientos de backup y recuperacin son realizados, entonces este mtodo nunca ser necesario. Utilizando TSPITR Este mtodo de recuperacin puede ser usado si un error de usuario ha ocurrido y la BD no puede ser vuelta atrs. Por ejemplo: Los usuarios notifican despus de un par de das que un programa de aplicacin no esta trabajando correctamente y hay datos incorrectos en una tabla. Volver atrs la BD dos das es una tarea imposible, ya que hay muchos usuarios realizando diferentes tareas en la BD. La tabla debe ser recuperada. En este caso, TSPITR, slo necesita un tablespace y sus dependencias para volver para atrs dos das. TSPITR Requerimientos Se deben cumplir los siguientes requerimientos antes de usar TSPITR: Todos los ficheros de datos que son parte del tablespace que necesita recuperacin deber estar presente. Se debe realizar un backup del fichero de control utilizando el comando alter database backup controlfile to <name>. Debe haber suficiente espacio en disco y memoria para iniciar una BD clonada. Realizacin de TSPITR Si se requiere ms informacin para realizar una recuperacin de un tablespace en un momento determinado, vease Oracle8: Gua de Backup y Recuperacin. Los siguientes pasos son necesarios para un TSPITR: 1 Averiguar si los objetos sern perdidos cuando se realice el TSPITR. 2 Investigar y resolver dependencias en la BD primaria. 3 Preparar la BD primaria para el TSPITR. 4 Preparar los ficheros de parmetros para la BD clonada. 5 Preparar la BD clonada para el TSPITR. 6 Recuperar la BD clonada. 7 Abrir la BD clonada. 8 Preparar la BD clonada para exportacin. 9 Exportar la BD clonada. 10 Copiar los ficheros clonados a la BD primaria. 11 Importar en la BD primaria.

Administracin de Bases de Datos

202
12 Preparar la BD primaria para el uso. 13 Salvar los Tablespaces recuperados en la BD primaria.

GESTOR DE RECUPERACIN
Recuperacin Usando RMAN Crear uno o ms canales que asistan la paralelizacin. Montar la BD. Restaurar todos los ficheros de datos. Recuperar la BD utilizando tiempo, cancelacin o cambio. Abrir la BD utilizando resetlogs Realizar un backup completo de la BD.

El proceso de restauracin y recuperacin para recuperaciones incompletas sigue el mismo procedimiento y sintaxis que una recuperacin completa, excepto todos los ficheros de datos necesarios para ser restaurados. Sintaxis de Recuperacin Un recover es normalmente ejecutado en un comando run o create script. Recover <Object>; Donde: Object database <until_clause> tablespace<until_clause>

Nota: Esta no es la sintaxis completa. La BD destino debe ser montada o abierta para recuperacin. Los ficheros restaurados deben estar offline y slo se pueden restaurar usando RMAN si el backup fue realizado o registrado con RMAN.

Administracin de Bases de Datos

203
RECUPERACIN INCOMPLETA CON RMAN
Recuperacin Usando RMAN Restauracin y recuperacin incompleta: RMAN > run ( > allocate channel c1 type DISK; > allocate channel c2 type DISK; > set until time = 1997-12-09:11:44:00; > restore database; > recover database; > sql alter database open resetlogs;)

Recuperacion Incompleta con RMAN A las 12 pm el Martes 9-DIC-97, inmediatamente se para la BD y comienza la recuperacin despus de determinar que la tabla de empleados ha sido borrada. El momento aproximado de fallo es conocido y la estructura de la BD no ha cambiado desde las 11:44 am. Se puede utilizar el mtodo hasta fecha: 1 Si la BD esta abierta, apagarla usando las opciones normal o inmediate 2 Montar la BD destino. Nota: No salvar la BD cuando se usa RMAN, ya que los ficheros del nuevo backup pueden ser usados en lugar de los anteriores si la sintaxis set until no es utilizada. 3 Comenzar el Gestor de Recuperacin y conectar con la BD, preferiblemante utilizando un catlogo de recuperacin. Antes de iniciar RMAN, deberan configurarse las variables de entorno NLS_LANG y NLS_DATE_FORMAT: $ NLS_LANG=american $ NLS_DATE_FORMAT=YYYY-MM-DD:HH24:MI:SS $ RMAN target rman/rman@DB00 rcvcat rman/rman@RCVCAT 4 Crear el comando run que realizar la restauracin y la recuperacin: RMAN> run {allocate change cl type DISK; 5 Restaurar todos los ficheros de datos del backup que permitiran una recuperacin incompleta con xito. RMAN escoger estos ficheros basndose en el comando set until: RMAN> ... set until time = 1997-12-09:11:44:00; RMAN> restore database: Nota: El comando restore database slo restaura ficheros de datos, no ficheros de control, ni redo logs o logs archivados. 6 Se puede necesitar restaurar los logs archivados. Si hay suficiente especio en disco disponible, restaurar en la localizacin LOG_ARCHIVE_DEST o usar los comandos SQL alter system archive log start to <location> para cambiar la localizacin. 7 Recuperar la BD en el momento especificado en el comando set until: RMAN> recover database: 8 Abrir la BD utilizando la opcin resetlogs: RMAN> sql alter database open resetlogs;} 9 Verificar que la tabla existe y realizar el backup. 10 Notificar a los usuarios que la BD esta disponible para su uso, y que los datos no validados antes de fallo del sistema debern ser reintroducidos. 11 Si se usa un catlogo de recuperacin, registrar el nuevo incarnation de la BD: RMAN> reset database: Gestor de Backup Se pueden restaurar los ficheros de datos y realizar una recuperacin incompleta en la BD en modo archivelog utilizando el Gestor de Backup, utilizando pasos similares a los de la recuperacin completa.

Administracin de Bases de Datos

204

Resumen Recuperacin basada en tiempo es usada cuando el tiempo del error es conocido. Recuperacin basada en cancelacin es utilizada para logs archivados perdidos o redo logs actuales online. El fichero de control de Backup es usado cuando las estructuras actuales de la BD y del Backup son diferentes. Se debe utilizar la opcin resetlogs cuando la BD est abierta. Hacer backups antes y despus de la recuperacin.

Administracin de Bases de Datos

S-ar putea să vă placă și