Está en la página 1de 62

ADMINISTRACIN

El presente trabajo pretende explicar la administracin de una base de datos ORACLE, lo


que considero ms importante para poder desarrollar las tareas administrativas, es el
conocimiento de la estructura interna del motor, mas que los comandos en s, por esta razn
se comienza con una descripcin de la organizacin interna del motor y posteriormente se
vern los comandos y las tablas que se deben consultar.

Responsabilidades del DBA

Instalar y actualizar el servidor y las herramientas de desarrollo.


Creacin de bases de datos, estructuras de almacenamiento y objetos primarios.
Localizar el espacio fsico y planear los requerimientos futuros para las bases de datos.
Modificar la estructura de la base de datos
Administracin de usuarios
Controlar y monitorear los accesos a la base de datos
Backup y recuperacin
Mantenimiento de la seguridad del sistema
Monitorear y optimizar el desempeo de la base de datos.

I. Componentes de la Arquitectura Oracle

1. Servidor Oracle
El servidor Oracle es un sistema para manejo de bases de datos objeto-relacionales que
proporciona una aproximacin abierta e integrada para el manejo de informacin.

2. Conexin a la base de datos

Oracle Administracin de Bases de Datos Pgina 1


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
El usuario que necesite interactuar con el servidor Oracle necesita primero establecer una
conexin a la Base de Datos. Los pasos siguientes se llevan a cabo para conectarse a una
Base de datos:
El usuario ejecuta una herramienta como SQL*PLUS, o corre una aplicacin,
originando un proceso usuario.
Cuando un usuario se conecta al servidor Oracle especificando un usuario, password,
y una Base de datos, se crea un proceso en la mquina que esta ejecutando el
Servidor Oracle. Este proceso se conoce como proceso servidor.

PL/SQL Es una extensin del lenguaje que ofrece la estructura procedimental de bloques
combinado con las capacidades no procedimentales de SQL.

Las herramientas de desarrollo de 4 generacin, presentan la interface con los datos, estas
herramientas son parte de la estrategia de arquitectura abierta de Oracle. Estas herramientas
soportan bases de datos Oracle y no Oracle (Como muchas herramientas lo hacen).

3. Proceso usuario
Corre en la mquina cliente
Se crea cuando se invoca una herramienta o aplicacin
Corre la herramienta o aplicacin (SQL*PLUS, Server Manager, OEM,
Developer/2000)
Genera llamados al Servidor Oracle

4. Proceso Servidor
Corre en la mquina servidor (host)
Atiende a un slo proceso usuario (servidor dedicado)
Procesa los llamados generados por el cliente
Devuelve resultados al cliente

5. Instancia Oracle

Oracle Administracin de Bases de Datos Pgina 2


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
El servidor Oracle consiste de una instancia Oracle y una Base de Datos Oracle. Una
instancia Oracle consiste de una estructura de memoria llamada la System Global Area
(SGA) y procesos de background usados por un servidor Oracle para manejar una Base
de Datos.
Al iniciar el servidor ORACLE, en memoria se localiza un rea especfica llamada
sistema de rea global (System global area SGA). A la combinacin de buffers de
memoria y procesos de fondo se le denomina una instancia de Oracle. La coleccin de
archivos fsicos se le denomina base de datos ORACLE.
La SGA es un grupo de buffers de memoria localizados por el servidor Oracle para una
instancia.
Los procesos de background, son las distintas tareas de todos los usuarios de la base de
datos (Consultas, inserciones, borrados, etc).
Una instancia es la combinacin de la SGA y los procesos de background, la informacin
contenida en los archivos de parmetros determinan las caractersticas de una instancia,
como son: El tamao del SGA y nmero de procesos entre otros.

6. Base de Datos Oracle


Una Base de datos Oracle representa las estructuras fsicas y est compuesta por
archivos del Sistema operativo. Una Base de Datos Oracle consiste de los siguientes
tipos de archivos:
Data Files
Redo Log Files
Control Files

Trmino Significado
Database Coleccin lgica de datos almacenados en tablespaces.
File Archivo de datos fsicos ubicados en un solo tablespace.
Tablespace Repositorio lgico para agrupar datos fisicamente.

Oracle Administracin de Bases de Datos Pgina 3


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Segment Conjunto de uno o mas extents, que contiene todos los datos para una
estructura especfica contenida en un tablespace.
Block Bloque fsico que localiza los datos existentes en un archivo ( Es un
componente de los archivos fsicos, un archivo fsico se compone de
varios bloques).

7. Otras estructuras fsicas

Aparte de los database files, el servidor Oracle usa otros archivos. Algunos de los
cuales son :

Parameter file
Password file
Archived redo log files

8. Procesamiento de un query

Las siguientes son las etapas principales en el procesamiento de un query :


1. Parse
2. Execute
3. Fetch

9. El Shared Pool

Se usa durante la fase de Parse


En el Library Cache se encuentra el texto de la instruccin, el cdigo parseado, y el
plan de ejecucin

Oracle Administracin de Bases de Datos Pgina 4


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
El Data Dictionary Cache contiene las definiciones y privilegios de tablas y
columnas

10. Database Buffer Cache

Nmero de bloques definidos por DB_BLOCK_BUFFERS


Tamao del buffer basado en DB_BLOCK_SIZE
Almacena los bloques ms recientemente usados

11. Program Global Area (PGA)

No compartida y no escribible.
Contiene :
Sort area
Informacin de la sesin
Estado de los cursores
Espacio de pila

12. Segmento de Rollback

Antes de efectuar una modificacin, el proceso servidor almacena el valor previo en un


segmento de rollback.

13. Redo Log Buffer

Tamnao definido por LOG_BUFFER


Registra las modificaciones hechas a travs de la instancia
Usado secuencialmente
Buffer circular

Oracle Administracin de Bases de Datos Pgina 5


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
14. Database Writer (DBWR)

El proceso Database Writer (DBWR) escribe los buffers dirty desde el database buffer
cache a los data files. Asegura que est disponible un nmero suficiente de free buffers
en el database buffer cache.

15. Log Writer (LGWR)

El proceso Log Writer (LGWR) es un proceso de background que escribe entradas desde
el redo log buffer a los redo log files.

16. Procesamiento de un COMMIT

Cuando se ejecuta un commit, ocurren los siguientes pasos:

1. El proceso servidor coloca un registro de commit en el redo log buffer


2. LGWR efecta una escritura contigua de todas las entradas del redo log buffer
3. Al usuario se le informa que el commit est completo
4. El proceso servidor registra la informacin para indicar que la transaccin est
completa y que han sido liberados los locks en los recursos.

Oracle Administracin de Bases de Datos Pgina 6


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
II. Uso de las herramientas administativas

1. Ejemplos

Herramienta Descripcin
Server Manager Usada para subir, bajar o recuperar una base
de datos
Oracle Enterprise Manager Herramienta grfica para administrar,
monitorear, y afinar mltiples bases de datos
SQL*Loader Utilidad para cargar datos desde archivos
externos a tablas Oracle
Export o Import Utilidad para exportar/importar datos en
formato Oracle
Password File Utilidad para crear el archivo de password
de la base de datos

2. Ejecutando el Server Manager

En Unix svrmgrl
En NT svrmgr30

Iniciando y ejecutando un script

En Unix svrmgrl command=@credb.sql


En NT svrmgr30 command=@u16run.sql

3. Oracle Enterprise Manager (OEM)

Oracle Enterprise Manager (OEM) consiste de una consola centralizada, agentes


inteligentes, y un paquete de aplicaciones estndar que proporcionan a los
Oracle Administracin de Bases de Datos Pgina 7
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
administradores de la base de datos la funcionalidad que necesitan para manejar sus
bases de datos.

Tambin existe un paquete de aplicaciones integradas conociadas como el OEM


Performance Pack, que proporcionan monitoreo, diagnstico y afinamiento experto y
avanzado

Oracle Administracin de Bases de Datos Pgina 8


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
III. Manejo de una instancia Oracle

1. Vistazo

Una base de datos Oracle no est disponible a los usuarios hasta que el administrador de
la base de datos haya iniciado la instancia y abierto la base de datos.

Durante el arranque de la base de datos ocurren los siguientes eventos :

1. Subir una instancia


2. Montar la base de datos
3. Abrir la base de datos

Se pueden ejecutar los siguientes pasos para bajar la base de datos :

1. Cerrar la base de datos


2. Desmontar la base de datos
3. Bajar la instancia

2. Usuarios administradores de la base de datos

Los dos usuarios administradores de la base de datos SYS y SYSTEM son :

Creados automticamente
Privilegiados con el role DBA

3. SYS Y SYSTEM

SYS
Password : change_on_install
Oracle Administracin de Bases de Datos Pgina 9
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Dueo del diccionario de datos de la base de datos

SYSTEM
Password : manager
Dueo de tablas internas adicionales usadas por herramientas Oracle

4. Autenticacin por sistema operativo

Establecer el usuario a ser autenticado por el sistema operativo


Establecer REMOTE_LOGIN_PASSWORD_FILE a NONE
Utilizar los siguientes comandos para conectarse a una base de datos

CONNECT / AS SYSDBA
CONNECT / AS SYSOPER

5. Autenticacin usando archivo de password

Crear el archivo de password usando la utilidad de password


orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin

Establecer REMOTE_LOGIN_PASSWORD_FILE a EXCLUSIVE o SHARED


Usar el siguiente comando para conectarse a la base de datos :
CONNECT INTERNAL/ADMIN

6. El archivo de parmetros

El archivo de parmetros, comnmente conocido como el initSID.ora, es un archivo de


texto que puede mantenerse usando un editor estndar del sistema operativo.

Oracle Administracin de Bases de Datos Pgina 10


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
El archivo de parmetros se lee nicamente durante el inicio de la instancia. Si el
archivo es modificado, es necesario bajar e iniciar la instancia para que los nuevos
parmetros surtan efecto.

Los parmetros en el archivo initSID.ora tienen un efecto significativo en el desempeo


de la base de datos :
Dimensionan el tamao de los componentes de la SGA
Establecen defaults para la instancia y la base de datos
Establecen lmites en la base de datos
Definen (en creacin de la base de datos) varios atributos fsicos de la base de datos,
como el tamao del bloque
Especifiacin de los constrol files, archived log files, y ubicaciones de los archivos
de trace

7. Parmetros que deberan especificarse

BACKGROUND_DUMP_DEST
COMPATIBLE
CONTROL_FILES
DB_BLOCK_BUFFERS
DB_NAME
SHARED_POOL_SIZE
USER_DUMP_DEST

8. Parmetros comnmente modificados

IFILE
LOG_BUFFER
MAX_DUMP_FILE_SIZE
PROCESSES
SQL_TRACE
Oracle Administracin de Bases de Datos Pgina 11
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
TIMED_STATISTICS

9. Startup y Shutdown en etapas

STARTUP
NOMOUNT
MOUNT
OPEN

SHUTDOWN
NORMAL
TRANSACTIONAL
IMMEDIATE
ABORT

10. Vistas dinmicas de desempeo

Mantenidas y continuamente actualizadas por el servidor Oracle


Contienen datos de disco y de estructuras de memoria
Contienen datos que son tiles para afinamiento
Tienen sinnimos pblicos con el prefijo V$

V$PARAMETER
V$SGA
V$OPTION
V$PROCESS
V$SESSION
V$VERSION
V$INSTANCE
V$CONTROLFILE

Oracle Administracin de Bases de Datos Pgina 12


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
V$DATABASE
V$DATAFILE
V$LOGFILE

11. Obteniendo los valores actuales de los parmetros

Server Manager : SHOW PARAMETER control


SELECT name FROM v$parameter WHERE name LIKE %control%;

12. Sesiones restringidas

Usar el comando STARTUP para restringir el acceso a la base de datos :


STARTUP RESTRICT
Usar el comando ALTER SYSTEM para colocar una instancia en modo restringido :
ALTER SYSTEM ENABLE RESTRICTED SESSION;

13. Matando sesiones

1. Identificar la sesin a terminar usando la vista V$SESSION :


SELECT sid, serial# FROM v$session WHERE username=SCOTT;
2. Ejecutar el comando ALTER SYSTEM ;
ALTER SYSTEM KILL SESSION 7,15;

Oracle Administracin de Bases de Datos Pgina 13


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
IV. Creacin de una Base de Datos

1. Prerrequisitos

Una cuenta privilegiada se autentica por una de las siguientes formas:


Sistema Operativo
Archivo de password
Memoria para iniciar la instancia
Espacio en disco suficiente

2. Planeacin de la ubicacin de los archivos de la Base de Datos


Mantener al menos dos copias activas del control file en al menos dos dispositivos
diferentes
Multiplexar los redo log files y colocar los miembros de cada grupo en discos diferentes
Separar los data files cuyos datos:
- Participaran en contencin por recursos en disco
- Tienen distinta duracin
- Tienen distintas caractersticas administrativas

3. Organizacin del sofware de Oracle


/u01/app/oracle
/u02/app/applmgr
/u02/oradata
/u03/oradata

4. Creacin de una Base de Datos: Consideraciones


En Unix
- Creada automticamente durante una instalacin
- Creada manualmente despus de la instalacin

Oracle Administracin de Bases de Datos Pgina 14


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
En NT
- Creada usando el Oracle Database Assistant
- Creada manualmente

5. Creacin manual de una Base de Datos


1. Decidir el nombre de la instancia y de la Base de Datos
2. Establecer las variables del Sistema Operativo
3. Preparar el archivo de parmetros
4. Crear el archivo password
5. Subir la instancia
6. Crear la Base de Datos
7. Correr los Scripts para generar el diccionario de datos y ejecutar las tareas posteriores
a la creacin

6. Ambiente del Sistema Operativo


En Unix establecer las siguientes variables de ambiente:
- ORACLE_HOME
- ORACLE_SID
- ORACLE_BASE
- ORA_NLS33
- PATH
En NT
- Establecer la variable ORACLE_SID para usar SVRMGR30
- Crear el servicio y el archivo de password con ORADIM80
Ejemplo
C:\ORADIM80 -NEW -SID u16 -INTPWD
PASSWORD -STARTMODE auto -PFILE
ORACLE_HOME\DATABASE\initu16.ora

7. Preparacin del archivo de parmetros


1. Crear el nuevo init<SID>.ora
Oracle Administracin de Bases de Datos Pgina 15
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
2. Modificar el initu16.ora editando los parmetros

8. Subir la instancia
1. Conectarse como SYSDBA
2. Subir la instancia en estado NOMOUNT
SVRMGR> startup nomount pfile=initu16.ora

9. Creacin de la Base de Datos


Comando CREATE DATABASE
Ejemplo:
CREATE DATABASE U16
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 100
LOGFILE
GROUP 1 ('/DISK3/log1a.rdo', '/disk4/log1b.rdo') SIZE 1M
GROUP 2 ('/DISK3/log2a.rdo,'/DISK4/log2b.rdo') SIZE 1M
DATAFILE
'/DISK1/System01.dbf' SIZE 50M AUTOEXTEND ON
CHARACTER SET WE81S08859P1;

10. TROUBLESHOOTING
La creacin de la Base de Datos falla si:
* Hay errores de sintaxis en el script SQL
* Los archivos a ser creados ya existen.
* Errores por permisos en el sistema operativo o por espacio insuficiente en disco

11. Despus de la creacin de la Base de Datos


La Base de Datos contiene:
* Datafiles que pertenecen al tablespace SYSTEM
Oracle Administracin de Bases de Datos Pgina 16
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
* Control Files y redo log files
* Usuario SYS/Change_on_install
* Usuario SYSTEM/manager
* Segmento de rollback SYSTEM
* Tablas internas (Pero no las vistas del diccionario de datos)

Oracle Administracin de Bases de Datos Pgina 17


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
V. Creacin de las Vistas del Diccionario de Datos y Paquetes Estndar

1. Uso del Diccionario de Datos


El Diccionario de Datos proporciona informacin a cerca de:
* Estructura lgica y fsica de la base de datos
* Nombres, definiciones y localizacin de espacio de algunos objetos
* Constraints de integridad
* Usuarios y privilegios de la base de datos
* Auditora

2. Tablas base y vistas del diccionario de datos


Vistas del diccionario de datos:
* Simplifican la informacin de la tabla base
* Creados con el script catalog.sql
Tablas base:
* Normalizadas
* Creadas con el script sql.bsq

3. Vistas del diccionario de datos


DBA_XXX : Objetos de toda la base de datos
ALL_XXX : Objetos a los que el usuario puede acceder
USER_XXX : Objetos propiedad del usuario

4. Diccionario de Datos: Ejemplos de Vistas


DICTIONARY
DICT_COLUMNS

DBA_TABLES
DBA_OBJECTS
DBA_LOBS
Oracle Administracin de Bases de Datos Pgina 18
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
DBA_TAB_COLUMNS
DBA_CONSTRAINTS

DBA_USERS
DBA_SYS_PRIVS
DBA_ROLES

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

5. Creacin de Vistas del Diccionario de Datos


Script Propsito
Catalog.sql Crea las vistas ms comnmente usadas del diccionario de datos
Catproc.sql Corre todos los scripts requeridos por PL/SQL en el servidor

6. Scripts Administrativos
Existen las siguientes convenciones para los scripts sql:
Cat*.sql Informacin del catlogo y del diccionario de datos
dbms*.sql Especificaciones de paquetes de la base de datos
prvt*.plb Cdigo encriptado de la base de datos
utl*.sql Vistas y tablas para utilidades

Oracle Administracin de Bases de Datos Pgina 19


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
7. Procedimientos y paquetes almacenados
Son objetos de la Base de Datos que permiten almacenar unidades de programacin
PL/SQL y se ejecutan usando herramientas Oracle como SQL*Plus, Server Manager o
Enterprise Manager, o ejecutndolas desde una aplicacin Oracle.

8. Qu son los Procedimientos Almacenados?


Son procedimientos o funciones
Se almacenan en el Diccionario de Datos
Pueden ser usados por muchos usuarios
Pueden aceptar y retornar parmetros
Pueden usarse en funciones SQL

9. Qu son los Paquetes?


Agrupacin de tipos, items y subprogramas PL/SQL lgicamente relacionados
Tienen dos partes:
- Una especificacin
- Un cuerpo
Permite que Oracle lea multiples objetos a memoria a la vez.

10. Paquetes proporcionados por Oracle


DBMS_LOB
DBMS_SESSION
DBMS_UTILITY
DBMS_SPACE
DBMS_ROWID
DBMS_SHARED_POOL

11. Informacin delos objetos almacenados


Vista DBA_OBJECTS del diccionario de datos
- OWNER
Oracle Administracin de Bases de Datos Pgina 20
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
- OBJECT_NAME
- OBJECT_TYPE
- STATUS (VALID, INVALID)

Comando DESCRIBE
Ejemplo: DESCRIBE dbms_session.set_role

12. Trobleshooting
El status de los objetos puede ser INVALID:
- Si se ejecutan comandos DDL sobre objetos referenciados
- Despus de crear los objetos con la utilidad IMPORT

Oracle Administracin de Bases de Datos Pgina 21


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
VI. Control File

1. Uso del Control File


Es un archivo binario necesario para que la Base de Datos inicie y opere
exitosamente
Cada vez que una instancia monta una Base de Datos Oracle, lee el Control File para
localizar los Data Files y los Online Redo Log Files.
El Control File se utiliza continuamente durante el uso de la Base de Datos y debe
estar disponible siempre que la Base de Datos de monte o se abra.
El Control Files proporciona informacin acerca de la consistencia de la Base de
Datos usada durante la recuperacin.
Si alguno de los Control Files activos de la Base de Datos ya no est disponible,
entonces la Base de Datos no puede funcionar apropiadamente.

2. Contenido del Control File


Nombre de la Base de Datos
Ubicacin de los data files y de los redo log files
Nombres de los tablespaces
Fecha de la ceacin de la Base de Datos
Nmero actual de secuencia del log
Informacin de checkpoint
Historia del log

3. Parmetros que afectan el tamao del Control File


MAXLOGFILES
MAXLOGMEMBERS
MAXLOGHISTORY
MAXDATAFILES
MAXINSTANCES
Oracle Administracin de Bases de Datos Pgina 22
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
4. Obteniendo informacin
V$CONTROLFILE
V$PARAMETER
Ejemplo: SELECT name FROM V$controlfile;
SELECT value FROM V$parameter
WHERE name=control_files;

5. Multiplexando el Control File


Control_Files=(/DISK1/control01.con,/DISK2/control02.con)

Oracle Administracin de Bases de Datos Pgina 23


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
VII. Mantenimiento de los Redo Log Files

1. Uso de los Redo Log Files


El servidor Oracle mantiene online redo log files para minimizar la prdida de datos
en la Base de Datos. Los redo log files registran todas las modificaciones hechas a
los datos en el database buffer cache con algunas excepciones.
Se usan nicamente para recuperacin.

2. Grupos y miembros de Redo Log


Grupos
Un conjunto de copias idnticas de los Online redo log files se llama un Online redo
log group
El proceso LGWR escribe simultneamente la misma infromacin a todos los Online
redo log files en un grupo
Oracle requiere almenos de dos Online redo log groups para la operacin normal de
la Base de Datos
Miembros
Cada Online redo log file en un grupo se llama un miembro
Cada miembro en un grupo tiene log sequence members idnticos y el mismo
tamao. El log sequence member se asigna cada vez que Oracle inicia la escritura de
un log group para identificar cada redo log file de manera nica. El log sequence
number se almacena en el control file y en el encabezado de todos los data files.

3. LGWR, Log Switches y Checkpoints

LGWR
Oracle registra secuencialmente todas las modificaciones hechas a la Base de Datos en el
redo log buffer. Las entradas se escriben a uno de los online redo log groups, llamado el
current, bajo las siguientes situaciones:

Oracle Administracin de Bases de Datos Pgina 24


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Ocurre un commit
El redo log buffer se llen en un tercio
Ocurre un timeout del LGWR

Log Switches
LGWR escribe secuencialmente a los online redo log files un log switch, es el evento
durante el cual
LGWR finaliza la escritura a un online redo log group y empieza a escribir otro.

Checkpoints
Durante un checkpoint:
Todos los buffer dirty de la Base de Datos se esriben a los data files por DBWR
El proceso CKPT actualiza los encabezados de todos los data files y control files
para reflejar que ha finalizado exitosamente.
Un checkpoint ocurre en las siguientes situaciones:
Cada log switch
Cuando una instancia se baja con la opcin NORMAL O IMMEDIATE
Parmetros LOG_CHECKPOINT_INTERVAL y LOG_CHECKPOINT_TIMEOUT.

4. Informacin acerca de los grupos


V$THREAD
Ejemplo: SELECT groups, current_group#, sequence#
FROM V$thread;

5. Informacin acerca de grupos y miembros


V$LOG
Ejemplo: SELECT group#, sequence#, bytes, members, status
FROM v$log;
V$LOGFILE
Ejemplo: SELECT *

Oracle Administracin de Bases de Datos Pgina 25


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
FROM v$logfile;

6. Log Switches y Checkpoints


Los log switches se pueden forzar con al comando:
ALTER SYSTEM SWITCH LOGFILE;
Controlar la frecuencia de los checkpoints con los parmetros:
LOG_CHECKPOINT_INTERNAL
LOG_CHECKPOINT_TIMEOUT

7. Adicin de Online Redo Log Groups


ALTER DATABASE
ADD LOGFILE (/DISK3/log3a.rdo,/DISK4/log3b.rdo)
SIZE 1M;

8. Adicin de Online Redo Log Members


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

9. Cmo relocalizar Online Redo log Files


1- Bajar la Base de Datos
2- Copiar los online redo log files a la nueva ubicacin
3- Montar la Bade de Datos
4- Ejecutar el comando ALTER DATABASE RENAME FILE
5- Abrir la Base de datos

10. Eliminacin de Online Redo Log Groups


ALTER DATABASE DROP LOGFILE GROUP 3;

11. Eliminacin de Online Redo Log Members


Oracle Administracin de Bases de Datos Pgina 26
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
ALTER DATABASE DROP LOGFILE MEMBER
/DISK4/log2b.rdo;

12. Posibles errores del LGWR


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

Oracle Administracin de Bases de Datos Pgina 27


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
VIII. Manejo de Tablespaces y Data Files

1. Vistazo
La arquitectura de la Base de Datos incluye las estructuras lgicas y fsicas que la
conforman.
La estructura fsica consiste de control files, online redo log files y data files.
La estructura lgica incluye tablespaces, segmentos, extents y data blocks.

2. Estructura de la Base de Datos


Una Base de Datos Oracle puede dividirse en reas lgicas de espacios ms pequeos
conocidas como Tablespaces
Tablespaces
Un tablespace puede pertenecer a slo una Base de Datos
Cada tablespace consiste de uno o ms archivos del Sistema Operativo
Pueden colocarse Online mientras la Base de Datos est corriendo
Pueden colocarse offline (excepto SYSTEM u otro tablespace con un segmento de
rollback activo), permitiendo que la Base de Datos siga corriendo
Pueden cambiar entre estado read-write y read-only
Usos de los Tablespaces
Controlan la localizacin de espacio y asignacin de espacio a usuario
Controlan la disponibilidad de los datos colocando tablespaces individuales online u
offline
Distribuyen el almacenamiento de datos entre dispositivos para mejorar el
desempeo y reducir la contencin
Ejecucin de operaciones de backup o recuperacin parcial
Mantener gran cantidad de datos estticos en dispositivos read-only
Data Files
Cada tablespace consiste de uno o ms archivos llamados data files
Un data file puede pertenecer a solo un tablespace

Oracle Administracin de Bases de Datos Pgina 28


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Oracle crea un datafile para un tablespace ubicando la cantidad especificada de
espacio en disco
El DBA puede modificar el tamao de un data file posterior a su creacin o puede
especificar que un data file puede crear dinmicamente a medida que crecen los
objetos en el tablespace
Segmentos
Un segmento es el espacio localizado para un tipo especfico de estructura lgica de
almacenamiento dentro de un tablespace.
Ejemplos: Tablas, indices, temporales, rollback
Un segmento puede estar ubicado en varios data files siempre que stos pertenezcan al
mismo tablespace
Extents
El siguiente nivel de espacio lgico de la Base de Datos se conoce como un extent. Un
extent es un conjunto de bloques contigos. Cada tipo de segmento est conformado por
uno o ms extents. Un extent debe existir en un data file.
Data blocks
Un data Block corresponde a uno o ms bloques fsicos localizados para un data file
existente.
Se especifica un tiempo de creacin de la Base de Datos por el parmetro de
inicializacin DB_BLOCK_SIZE. Un data block es la unidad mnima de entrada
salida.

3. Tablespaces SYSTEM y NO-SYSTEM


El tablespaces SYSTEM contiene:
Informacin del diccionario de datos
Segmento de rollback SYSTEM
Los tablespaces NO-SYSTEM contienen:
Segmentos de rollback
Segmentos temporales
Datos de la aplicacin

Oracle Administracin de Bases de Datos Pgina 29


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Indices de la aplicacin

4. Creacin de tablespaces
Comando CREATE TABLESPACE
Ejemplo: CREATE TABLESPACE app_data
DATAFILE /DISK4/app01.dbf SIZE 100M,
/DISK3/app02.dbf SIZE 100M

MINIMUN EXTENT 500K


DEFAULT STDRAGE (INITIAL 500K NEXT 500K MAXEXTENTS 500
PCTINCREASE 0);

5. Parmetros de almacenamiento
INITIAL
NEXT
MAXEXTENTS
MINEXTENTS
PCTINCREASE

6. Tablespace temporal
Usado por operaciones de ordenamiento (sort)
No puede contener objetos permanentes
Ejemplo:
CREATE TABLESPACE sort
DATAFILE /DISK2/sort01.dbf SIZE 50M
DEFAULT STDRAGE (INITIAL 2M NEXT 2M
MAXEXTENTS 500 PCTINCREASE 0)
TEMPORARY;

7. Adicin de Data Files a un tablespace

Oracle Administracin de Bases de Datos Pgina 30


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Se puede aumentar el tamao de dos formas:
Agregar un data file a un tablespace
Cambiar el tamao de un data file
Ejemplo:
ALTER TABLESPACE app_data
ADD DATAFILE /DISK3/app03.dbf SIZE 200M;

8. Crecimiento automatico de data files


Se puede alterar el tamao de un data file de dos formas:
Automticamente usando la opcin AUTOEXTEND
Manualmente usando el comando ALTER DATABASE
Ejemplo: ALTER TABLESPACE app_data
ADD DATAFILE /DISK6/app04.dbf SIZE 200M
AUTOEXTEND ON NEXT 10M
MAXSIZE 500M;

9. Modificacin manual del tamao de los data files


ALTER DATABASE DATAFILE
/DISK/app02.dbf RESIZE 200M;

10. Modificacin de los parmetros de storage


Ejemplo: ALTER TABLESPACE app_data
DEFAULT STORAGE
(INITIAL 2M NEXT 2M MAXEXTENTS 999);

11. Status OFFLINE


El tablespace que est OFFLINE no est disponible para acceder a sus datos
El tablespace SYSTEM y cualquier tablespace con segmentos de rollback activos no
pueden colocarse OFFLINE;

Oracle Administracin de Bases de Datos Pgina 31


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
12. El status READ-ONLY
Ejemplo: ALTER TABLESPACE app_data READ ONLY;
El tablespace APP_DATA est disponible nicamente para operaciones de lectura

13. Estableciendo un tablespace como READ-ONLY


El tablespace debe estar online
No se permiten transacciones activas
El tablespace no debe contener segmentos de rollback activos
El tablespace no debe estar involucrado en un backup online

14. Eliminacin de tablespaces


La siguiente instruccin elimina el tablespace APP_DATA y todo su contenido
Ejemplo: DROP TABLESPACE app_data
INCLUDING CONTENTS;

15. Informacin de los tablespaces


DBA_TABLESPACES
Ejemplo: SELECT tablespace_name, initial_extent, next_extent,
max_extents, pct_increase.
FROM dba_tablespaces;

16. Informacin de los data files


DBA_DATA_FILES
Ejemplo: SELECT file_name, tablespace_name, bytes, maxbytes
FROM dba_data_files;

17. Recomendaciones
Usar varios tablespaces
Especificar los parmetros de almacenamiento
Asignar espacio en los tablespace a los usuarios

Oracle Administracin de Bases de Datos Pgina 32


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
IX. Estructuras de almacenamiento

1. Jerarqua de almacenamiento en la Base de Datos


Una base de datos est agrupada lgicamente en tablespaces
Un tablespace puede consistir de uno o ms segmentos
Cuando se crea un segmento, consiste de al menos un extent el cual es un conjunto de
bloques contigos. A medida que crece el segmento se adicionan extents al segmento
Un bloque, es la unidad ms pequea usada para operaciones read-write

2. Tipos de segmentos
Tabla: Es el medio ms comn de almacenar datos dentro de una base de datos. Los
datos dentro de una tabla no se almacenan con un orden particular.
Cluster: Las filas en un cluster se almacenan basadas en los valores de ciertas columnas.
Un cluster puede contener una o ms tablas y es un tipo de segmento de datos.
Indice: Todas las entradas para un ndice particular se almacenan dentro de un segmento
ndice. Si una tabla tiene tres ndices, se usan tres segmentos de ndices. El propsito de
este ndice es buscar la ubicacin de las filas en la tabla basado en un valor especfico.
Rollback: Es usado por una transaccin que est efectuando cambios en una base de
datos. Antes de modificar los bloques de datos o de ndices, el valor anterior se
almacena en el segmento de rollback. Esto permite que el usuario pueda deshacer los
cambios realizados.
Temporal: Usando una instruccin SQL requiere de un ordenamiento que requiere mucho
espacio, se crean en disco segmentos temporales. Ejemplos: CREATE INDEX,
SELECT DISTINCT, y SELECT GROUP BY.
LOB: Permite almacenar documentos de texto, imgenes, o videos.

3. Procedencia de la clusula STORAGE


Cualquier parmetro de storage especificado a nivel de segmento ignora la opcin
correspondiente establecida a nivel de tablespace

Oracle Administracin de Bases de Datos Pgina 33


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Cuando no se establecen explcitamente parmetros de storage a nivel de segmento,
toman el valor de aquellos establecidos a nivel de tablespace
Cuando no se establecen explcitamente parmetros de storage a nivel de tablespace,
aplican los defaults de Oracle.

4. Localizacin y DeLocalizacin de extents


Localizados cuando el segmento se:
- Crea
- Extiende
- Altera
De-Localizados cuando el segmento se:
- Elimina
- Altera
- Trunca
- Contrae automticamente (nicamente segmentos de rollback)

5. Extents libres y usado


Cuando se crea un tablespace, los data files en el tablespace contienen los siguientes
elementos:
Un bloque encabezado, el cual es el primer bloque en el archivo
Un extent libre, compuesto por el resto del data file
A medida que se crean segmentos, localizan espacio a partir de los extents libres en el
tablespace. El espacio contigo usado por un segmento se conoce como un extent usado.
Cuando los segmentos liberan espacio, los extents liberados se adicionan al conjunto de
extents libres disponibles en el tablespace.

6. Bloque Oracle
Unidad mnima de I/O
Consiste de uno o ms bloques del Sistema Operativo
Establecido por DB_BLOCK_SIZE

Oracle Administracin de Bases de Datos Pgina 34


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Establecido cuando se crea la base de datos
Cada data block contiene:
- Header
- Espacio libre
- Datos

7. Parmetos de utilizacin del espacio en un bloque


INITRANS
MAXTRANS
PCTFREE
PCTUSED

8. Informacin acerca de las estructuras


DBA_SEGMENTS
Ejemplo: SELECT segment_name, tablespace_name, extents, blocks
FROM dba_segments;
DBA_EXTENTS
Ejemplo: SELECT extent_id, file_id, block_id, block
FROM dba_extents
WHERE owner =SCOTT;

9. Espacio libre
SELECT tablespace_name, count (*), max (blocks), sum (blocks)
FROM dba_free_space
GROUP BY tablespace_name;

10. Resumen Almacenamiento de la base de datos

Oracle Administracin de Bases de Datos Pgina 35


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Parmetros de almacenamiento.

INITIAL
NEXT
MAXEXTENTS
MINEXTENTS
PCTINCREASE
OPTIMAL
FREELISTS

Parmetros de utilizacin de espacio

PCTFREE
PCTUSED
INITRANS
MAXTRANS

BLOQUES DE LA BASE DE DATOS

Oracle Administracin de Bases de Datos Pgina 36


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Propiedades

Un bloque corresponde a uno o mas bloques fsicos en disco.


El tamao se determina al crear la base de datos, y en el parmetro DB_BLOCK_SIZE y
es constante en todos los datafiles.
El DB_BLOCK_SIZE tambin determina el tamao de cada buffer en el SGA.
Los bloques de base de datos tambin son conocidos como bloques lgicos y bloques
ORACLE.
Una vez creada la base de datos, el parmetro DB_BLOCK_SIZE no puede ser
cambiado.
El tamao tpico del bloque es 2K o 4K. El valor por defecto depende del sistema
operativo.
En algunas plataformas el tamao del bloque puede ser muy grande (Por ejemplo 32 K).
Este bloque es conocido como BIG ORACLE BLOCKS.
Todas las operaciones de I/O, estn implementadas para trabajar a nivel de bloques.
El servidor de Oracle mantiene bloqueos a nivel de fila.

Partes de un Database Block

Parte Descripcin

Header Contiene la informacin general del bloque, como la direccin y el tipo de segmento.

Table directory Almacena la informacin acerca de las tablas presentes en el bloque.

Row directory Contiene informacin de las filas presentes en el bloque.

Free Space Consiste en un conjunto de bytes en el bloque, disponibles para realizar inserciones o

actualizaciones de filas.

Row Data Almacena los datos de la tabla o indice.

Para el caso de Oracle 8, se observa una diferencia en cuanto a los componentes de un


Database block, el Header contiene la informacin del directorio de tablas y el directorio de
filas.

Oracle Administracin de Bases de Datos Pgina 37


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Control del espacio usado

El control del uso del espacio libre para inserciones, actualizaciones y borrado de filas en
bloques de la base de datos, se especifica en valores apropiados en los siguientes
parmetros.
PCTFREE
PCTUSED
INITRANS
MAXTRANS

PCTFREE y PCTUSED poseen el control del uso de espacio libre para inserciones o
actualizaciones de filas en bloques de la base de datos. Ambos parmetros aplican a tablas,
clusters, y vistas usando los comandos CREATE y ALTER. PCTFREE puede ser
especificado para indices.

Oracle Administracin de Bases de Datos Pgina 38


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Los valores por defecto son para PCTFREE 10% y para PCTUSED 40%, la suma de
PCTFREE y PCTUSED debe ser menor o igual al 100.
INITRANS indica el nmero de transacciones localizadas inicialmente en el encabezado del
bloque.
MAXTRANS indica el mximo nmero de transacciones que pueden acceder al bloque
concurrentemente.

En el caso 1, se pueden insertar filas en el bloque ya que la utilizacin del mismo est por
debajo del 80%.
En el caso 2, no se pueden insertar filas, el espacio sobrante es utilizado en caso de
modificaciones, ejemplo cuando una columna tiene un valor nulo y cambia de valor.
En el caso 3, si se borran filas o se reduce el espacio ocupado con modificaciones, la
utilizacin del bloque puede estar por debajo del 80%, sin embargo el bloque no es usado
para inserciones hasta que la utilizacin del bloque caiga por debajo de PCTUSED.
En el caso 4, cuando el nivel baja de PCTUSED el bloque queda disponible para insercin.

Oracle Administracin de Bases de Datos Pgina 39


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Asignar un valor bajo al parmetro PCTFREE

Permite inserciones para llenar bloques ms completamente.


Puede requerir menos bloques para almacenar datos.
Puede incrementar los costos de proceso si se requiere de reorganizacin de bloques
frecuentemente.
Puede causar migracin de filas.

Asignar un valor alto al parmetro PCTFREE

Reserva mas espacio para actualizaciones.


Puede requerir mas bloques para almacenar datos.
Bajos costos de proceso porque los bloques pueden requerir reorganizacin con poca
frecuencia.
Reduce la necesidad de encadenar filas.

Asignar un valor bajo al parmetro PCTUSED

Reduce el costo de procesamiento porque los bloques no son liberados frecuentemente.


Incrementa el espacio sin utilizar.

Asignar un valor alto al parmetro PCTUSED

Incrementa los costos de proceso porque los bloques son liberados frecuentemente.
Mejora el uso de espacio ya que los bloques se utilizan con mas capacidad.

INITRANS

Es el nmero inicial de entradas de transacciones, para transacciones concurrentes, estas son


localizadas en cada encabezado de bloque, cuando un bloque es localizado (Por defecto 1,
mnimo 1, mximo 255). Cada entrada de transaccin es aproximadamente de 23 byter de
longitud (Depende del sistema operativo).

Oracle Administracin de Bases de Datos Pgina 40


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
MAXTRANS

Es el mximo nmero de transacciones concurrentes que puede soportar un bloque (Mximo


255).
El valor por defecto para MAXTRANS depende del sistema operativo, pero usualmente es
de 255.
Cada transaccin puede necesitar aproximadamente 23 bytes de espacio libre en el bloque.
Si el espacio libre del bloque est siendo usado, las transacciones pueden tener que esperar
para acceder al bloque.

EXTENTS

Un extent es un conjunto de bloques de datos contigos. Cuando el objeto de la base de datos


crece, se localiza espacio para el mismo.

Los extents son localizados cuando:


El segmento es creado (INITIAL EXTENT)
El segmento crece (NEXT EXTENT)
La tabla o cluster es alterado y requiere extents.

Los extents son liberados cuando:


El segmento o cluster es borrado.
El segmento o cluster es truncado.
El segmento es ms grande que el ptimo y contiene extents libres (Unicamente para
segmentos de rollback).

Caractersticas de los extents

Cada segmento en una base de datos es creado con el menor nmero de extents para
almacenar los datos.

Oracle Administracin de Bases de Datos Pgina 41


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
El primer extent es llamado el extent inicial.
Los extents siguientes son llamados extents incrementales.
Un objeto puede localizar un nuevo extent solamente si los extent localizados actualmente
se encuentran llenos.
La frecuente liberacin de extents puede ocasionar una defragmentacin del tablespace.
El extent inicial es un pedazo de espacio reservado en la base de datos. Cuando el extent
inicial se llena, se localiza un NEXT EXTENT.
El servidor de oracle considera los bloques como bloques consecutivos, pero esto no
significa que deban ser contgos fsicamente en disco.

Control de la localizacin de los extents

Parmetro Descripcin
INITIAL Tamao en bytes del primer extent localizado en el segmento, por
defecto equivale a cinco data blocks.
NEXT Tamao en bytes de los extents siguientes, por defecto equivale a
cinco data blocks.
MAXEXTENTS Nmero total de extents que pueden ser localizados en el
segmento, el tamao mximo depende del tamao de los bloques
de Oracle, por ejemplo 121 para bloques de 2K.
MINEXTENTS Nmero total de extents que pueden ser localizados al momento de
ser creado el segmento, por defecto es 1 excepto para los
segmentos de rollback que requieren 2.
PCTINCREASE Porcentaje en el cual se puede incrementar los extents siguientes.
OPTIMAL Especifica el tamao optimo en bytes para los segmentos de
rollback.
FREELIST Nmero de listas de bloques libres para insercin en na tabla. Por
defecto es uno.

Oracle Administracin de Bases de Datos Pgina 42


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
FREELIST GROUPS Nmero de freelist para ser usado en diferentes instancias de un
Parallel Server.

Representacin del almacenamiento en Oracle.

En la grfica anterior se presentan las tablas de las cuales se saca la informacin necesaria
para presentar en la aplicacin.

Oracle Administracin de Bases de Datos Pgina 43


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
X. Segmentos de rollback

1. Vistazo
Un segmento de rollback se usa para salvar el valor anterior cuando un proceso est
efectuando modificaciones a los datos en una base de datos, almacena informacin como
el cdigo del archivo, cdigo del bloque y tambin datos como existan antes de ser
modificados.
El encabezado de un segmento de rollback contiene una tabla donde se almacena
informacin acerca de las transacciones que est usando el segmento.
Una transaccin puede usar nicamente un segmento de rollback para almacenar todos
los registros de rollback. Muchas transacciones pueden escribir a un segmento de
rollback.

2. Segmentos de rollback: Propsito


Rollback de la transaccin
Recuperacin de la transaccin
Consistencia en la lectura

Oracle Administracin de Bases de Datos Pgina 44


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
XI. Auditora de la base de datos.

Privilegios de operacin de la auditora


- Auditora siempre
- Iniciar la base, bajar la base y conexiones de SYSDBA
Auditora de la base de datos
- Habilitada por DBA
- Incapaz de grabar registros en la base de datos
Valores base de auditora en aplicaciones
- Implementacin mediante cdigo
- Poder grabar registros en la base.
- Usar pistas de cambios en las tablas
El servidor de Oracle puede auditar acciones en la base de datos como son :
- Iniciar una instancia, la auditora registra el usuario del sistema operativo quien inicia la
instancia, identificacin de la terminal y la fecha y la hora y cuando la auditora es
habilitada o inhabilitada.
- Bajar una instancia, de forma similar se registra la informacin del usuario del sistema
operativo, la terminal y la fecha y hora.
- Conexiones a la base de datos con privilegios de administrador, se graba el registro con
la informacin del usuario que ingresa como SYSOPER o SYSDBA.

1. Auditora de la base de datos

Auditora es el monitoreo y grabacin de acciones seleccionadas de los usuarios. La


informacin de los eventos es almacenada en la pista de auditoria.
La pista de auditoria puede ser usada para investigar actividades sospechosas. Por ejemplo,
si un usuario sin autorizacin borra datos de las tablas, el administrador de la base de datos
puede decidir auditar todas las conexiones a la base de datos en conjunto con borrados
exitosos o fallidos de registros.

Oracle Administracin de Bases de Datos Pgina 45


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Puede por medio de la auditora registrar estadsticas de las tablas mas actualizadas y/o
consultadas, para afinar las operaciones de Entrada/Salida.

2. Auditora de valores base

La auditora no puede registrar los valores de las columnas que son cambiados, si requiere
almacenar los datos anteriores de las columnas que son modificadas, se debe usar auditora
de aplicaciones. La auditora de aplicaciones se realiza mediante cdigo en la herramienta
cliente, procedimientos almacenados, o triggers de la base de datos.
Para verificar la auditora bsica sobre conexiones, se puede examinar el visor de sucesos
de Windows NT, en la parte de Registro de aplicacin.

3. Demostracin de auditoria de valores base

Se posee una tabla de empleados, donde tenemos los siguientes campos:

Codigo
Nombre
Direccion
Telfono

Por alguna razn se desea conservar la historia de los valores contenidos en esta tabla, en
caso de que se cambie la direccin o el telfono del empleado, se desea mantener un registro
de los datos anteriores. Para esto se puede crear un trigger a la tabla que posea el siguiente
cdigo.

CREATE TRIGGER auditoria_empleados


AFTER INSERT OR DELETE OR UPDATE
ON empleados
FOR EACH ROW
BEGIN
Oracle Administracin de Bases de Datos Pgina 46
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
INSERT INTO aud_empleados
VALUES (:OLD.codigo, :OLD.nombre, :OLD.direccion, :OLD.telefono,
:NEW.codigo, :NEW.nombre, :NEW.direccion, :NEW.telefono,
USER, SYSDATE);
END;

Con el trigger anterior, cada vez que se inserte, modifique o borre un registro de la tabla
empleados, se guardar la informacin en la tabla aud_empleados (La tabla aud_empleados
debe ser creada por el administrador o alguna persona encargada de la auditora).

4. Usando auditora de la base de datos

El administrador de la base de datos debe definir claramente el propsito de la auditora, de


lo contrario puede que la informacin generada por la auditora pueda crecer
desmesuradamente, sin ofrecer informacin valiosa, por otro lado puede llegar a degradar el
desempeo de la base de datos.

Oracle Administracin de Bases de Datos Pgina 47


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Habilitar la auditora de la base de datos
Una vez que se decide que auditar, se debe asignar el parmetro de inicializacin
AUDIT_TRAIL, para que habilite la auditora para la instancia. Este parmetro indica si la
pista de auditora se escribe a una tabla de la base de datos o a la pista de auditora del
sistema operativo.

5. Especificacin de las opciones de auditora

El siguiente paso es especificar las opciones de auditora usando el comando AUDIT, con
este comando se indica cuales comandos, usuarios, objetos o privilegios auditar. Se puede
indicar si un registro de auditora debe ser generado por cada ocurrencia o una vez por
sesin. Si una opcin de auditora no es necesaria, se puede desabilitar la opcin con el
comando NOAUDIT.

6. Ejecucin de instrucciones

Cuando un usuario ejecuta una instruccin SQL o PL/SQL, el servidor procede a examinar
las opciones de auditora, para determinar si la ejecucin del mismo debe generar algn
registro de auditora. Si el comando SQL se encuentra dentro de un programa PL/SQL, es
necesario que sea ejecutado dicho comando para que se registre la auditora, el bloque de
instrucciones debe pasar por dicho comando y puede llegar a generar varios registros de
auditora.

7. Generacin de datos de auditora

La generacin e insercin de un registro de auditora, es independiente de la transaccin del


usuario; esto es, si la transaccin del usuario realiza rollback, el registro de auditoria
permanece intacto. Sin embargo el registro de auditora es generado durante la fase de
ejecucin, lo cual significa que si el comando posee un error de sintaxis no se genera un
registro de auditora.

Oracle Administracin de Bases de Datos Pgina 48


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
8. Revisin de la informacin de auditora

La informacin de la auditora se revisa, mediante selecciones a la pista de auditora de


vistas del diccionario de datos o usando la utilidad del sistema operativo. Esta informacin
es utilizada para investigar actividades sospechosas y monitorear la actividad de la base de
datos.

9. Habilitando la auditora de la base de datos

El administrador de la base de datos asigna al parmetro de inicializacin AUDIT_TRAIL


habilitar la auditora para la instancia.

Sintaxis

AUDIT_TRAIL = valor

Donde valor puede tomar uno de los siguientes valores:

Oracle Administracin de Bases de Datos Pgina 49


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
VALOR DESCRIPCION
DB Habilita la auditora y direcciona todos los registros de auditora a la pista de
auditora de la base de datos (sys.aud$)
OS Habilita la auditora y direcciona todos los registros de auditora a la pista de
auditora del sistema operativo. (Si es permitido por este)
NONE Deshabilita la auditora (Este es el valor por defecto).

Nota curiosamente al buscar el parmetro en el init.ora, se encontr que el parmetro estaba


comentariado y posea el siguiente valor.
#audit_trail = true
Este valor no se menciona como un posible valor para ser asignado al parmetro.
Buscando en la documentacin se encuentra que se puede asignar el valor TRUE al
parmetro y se comporta como si fuera DB, anotan que es por compatibilidad con versiones
anteriores.

10. Habilitando las opciones de auditora

Auditar instrucciones
AUDIT user;
Auditar privilegios
AUDIT select any table BY scott BY ACCESS;
Auditar objetos
AUDIT LOCK ON scott.emp BY ACCESS WHENEVER SUCCESFUL;

Se utiliza el comando AUDIT para especificar las opciones de auditora. Estos registros de
auditora nunca son generados por sesiones del usuario SYS o conexiones como
INTERNAL.

Instrucciones de auditora

Oracle Administracin de Bases de Datos Pgina 50


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Se pueden ingresar los comandos de auditora con instrucciones de SQL para un tipo de
objeto, las instrucciones que se pueden auditar por ejemplo son CREATE, ALTER, y DROP
USER para todos los usuarios.

Auditora de privilegios

La auditora de privilegios se usa para verificar el uso de los privilegios del sistema. Por
ejemplo siempre que el usuario Scott realice un SELECT sobre cualquier tabla, se genere un
registro de auditora, cuando el usuario realiza una consulta sobre una tabla en la cual no
tiene privilegios no se genera el registro de auditora.

Sintaxis de los comandos de auditora

Privilegios o auditora de instrucciones

AUDIT {statement|system_priv}
[,{statement|system_priv}]....
[BY user [, user]...]
[BY {SESSION|ACCESS} ]
[WHENEVER [NOT] SUCCESSFUL]

Auditora de objetos

AUDIT statement [,statement]...


ON {[schema.]objeto|DEFAULT}
[BY {SESSION|ACCESS}]
[WHENEVER [NOT] SUCCESSFUL]

Donde:

Statement Especifica la instruccin SQL o el esquema-objeto a auditar.

Oracle Administracin de Bases de Datos Pgina 51


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
System_priv Especifica el privilegio del sistema a auditar.
Schema.schema-object Especifica el objeto seleccionado para auditora.
Default Conjunto de objetos especficos como objetos por defecto.
User Indica el usuario sobre el cual realizar la auditora, si se omite se
realizar la auditoria para todos los usuarios.
BY SESSION Origina que Oracle inserte nicamente un registro por objeto de la
base de datos en el audit trail por cada sesin, esta es la opcin
por defecto, excepto para instrucciones DDL.
BY ACCESS Origina que Oracle inserte un registro en el audit trail, cada vez
que una instruccin auditada es enviada.
WHENEVER Especifica que la auditora sea realizada nicamente para
instrucciones satisfactorias o fallidas. El valor por defecto es
ambas.

Es importante anotar que en caso de realizarse la auditora a instrucciones fallidas, no tiene


en cuenta una consulta de una tabla que no exista, el registro de auditora es realizado
durante la fase de ejecucin.
La auditora de privilegios e instrucciones especificadas por el comando AUDIT, solo
aplican para las sesiones siguientes, no para las sesiones activas, en cambio la auditora
sobre objetos se hace efectiva inmediatamente.

11. Auditora de esquema de objetos

VISTA SECUENCIA PROCEDIMIENTO SNAPSHOT


IV. Objeto XII. TABLA
Opcin ALMACENADO

ALTER X X X

AUDIT X X X X X

COMMENT X X X

DELETE X X X

EXECUTE X

Oracle Administracin de Bases de Datos Pgina 52


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
GRANT X X X X X

INDEX X X

INSERT X X X

LOCK X X X

READ
RENAME X X X X

SELECT X X X X

UPDATE X X X

Observar las opciones de auditora

Vista del diccionario de datos Descripcin


ALL_DEF_AUDIT_OPTS Opciones de auditora por defecto
DBA_STMT_AUDIT_OPTS Opciones de auditora de instrucciones
DBA_PRIV_AUDIT_OPTS Opciones de auditora de privilegios
DBA_OBJ_AUDIT_OPTS Opciones de auditora de objetos

12. Desabilitar las opciones de auditora

NOAUDIT user WHENEVER SUCCESSFUL;


NOAUDIT create table BY scott;
NOAUDIT LOCK ON emp;

La instruccin NOAUDIT para la auditora especificada en el comando.


NOAUDIT {statement|system_priv}
[, {statement|system_priv} ] . . .
[BY user [, user ] . . . ]
[WHENEVER [NOT] SUCCESFULL]

NOAUDIT statement [,statement ] . . .

Oracle Administracin de Bases de Datos Pgina 53


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
ON {[schema.]object | DEFAULT}
[WHENEVER [NOT] SUCCESSFUL ]

La instruccin NOAUDIT reversa el efecto de una instruccin AUDIT previa.


La instruccin NOAUDIT puede tener la misma sintaxis de una instruccin AUDIT previa y
con ello desabilitar la auditora que se haba establecido, sin embargo, si una instruccin
AUDIT (Instruccin 1) habilita la auditora para un usuario especfico, y una segunda
instruccin AUDIT (Instruccin 2) habilita la auditora para todos los usuarios, al ejecutar
una instruccin NOAUDIT que desabilite la auditora para todos los usuarios, sta reversa la
Instruccin 2, pero permite que la auditora asignada con la Instruccin 1 contine.

13. Viendo los resultados de la auditora

La pista de auditora:
Almacena los registros generados por instrucciones, privilegios y objetos auditados.
El registro de auditora est almacenado en la tabla del diccionario de datos SYS.AUD$
o en el registro de auditora del sistema operativo.
Cada registro en la pista de auditora incluye:
El usuario quien ejecut la instruccin
El comando emitido
Cualquier privilegio de objeto usado
Los objetos referenciados en la instruccin
La fecha y hora de ejecucin de la instruccin

Localizacin de la pista de auditora

Los registros de auditora pueden ser almacenados en una tabla del diccionario de datos,
llamada la base de datos de pistas de auditora (Database Audit Trail) o en la pista de
auditora del sistema operativo.

Contenido de la pista de auditora

Oracle Administracin de Bases de Datos Pgina 54


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Cada registro de la pista de auditora incluye:
El nombre del usuario
La identificacin de la sesin
La identificacin de la terminal
El nombre del objeto accesado
La operacin desempeada
El cdigo completo de la operacin
La fecha y la hora
Los privilegios del sistema utilizados

Vista de la pista de auditora Descripcin


DBA_AUDIT_TRAIL Todas las entradas de la pista de auditora
DBA_AUDIT_EXISTS Registros para AUDIT EXISTS/NOT EXISTS
DBA_AUDIT_OBJECT Registros concernientes al ambiente de los objetos
DBA_AUDIT_SESSION Todas las conexiones y desc onexiones
DBA_AUDIT_STATEMENT Registros de auditora de instrucciones

Recomendacin mover la pista de auditora fuera del tablespace system, ya que la pista de
auditora puede ser muy extensa.

Oracle Administracin de Bases de Datos Pgina 55


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
XIII. Comunicacin con un servidor remoto

1. Resolucin del esquema de nombres de objetos

Para que una aplicacin resuelva las referencias del esquema de objetos (Un proceso
llamado name resolution), Oracle utilizar una jerarqua de nombres de objetos. Por ejemplo,
en una base de datos sola, se garantiza que un esquema tiene un nombre nico, y dentro de
este cada objeto tiene un nombre nico, de esta manera se garantiza la unicidad de un nombre
de esquema-objeto.

En una base de datos distribuida, un esquema puede encontrarse repetido en dos bases de
datos diferentes, o puede suceder con un nombre de objeto, la solucin es agregando a la
jerarqua de nombres el nombre global de la base de datos.

2. Conexin entre versiones diferentes de Oracle

Un sistema distribuido de bases de datos, puede incorporar bases de datos Oracle de


diferentes versiones, todas las versiones soportadas de Oracle pueden participar en un
sistema distribuido de bases de datos. Es importante anotar que se deben conocer los objetos
en ambas versiones para que se puedan comprender las dos bases de datos. Por ejemplo, si
en un motor Oracle 8i se poseen tablas de objetos, estas no pueden ser comprendidas por una
base de datos basada en la versin 7.

3. Bases de datos distribuidas y procesos distribuidos

Los trminos base de datos distribuida y procesos distribuidos se encuentran relacionados


pero tienen grandes diferencias entre s.

Base de datos distribuida: Es un conjunto de bases de datos que pueden estar almacenadas en
diferentes computadores y se comportan en la aplicacin como una sola base de datos.
Oracle Administracin de Bases de Datos Pgina 56
Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Proceso distribuido: Ocurre cuando una aplicacin distribuye tareas en diferentes
computadores en una red.

4. Comunicacin entre servidores

La forma de establecer la comunicacin entre dos bases de datos ORACLE es mediante un


database link, por lo menos fue una forma de comunicacin que encontr. Cada base de datos
es conocida por un global database name, este se encuentra definido por el dominio de la
mquina y por el nombre de la base de datos, de esta forma se puede lograr la comunicacin
a travs de una red, intranet o internet.

En la figura se describe una base de datos distribuida.

Oracle Administracin de Bases de Datos Pgina 57


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
5. Database Links

Para facilitar los requerimientos de un sistema distribuido de bases de datos, ORACLE


utiliza los database links, un database link define una via de comunicacin desde una base de
datos a otra.

Un database link es escencialmente transparente para los usuarios de un sistema de base de


datos distribuido, a causa que el nombre del database link es el nombre global de la base de
datos.

Por ejemplo, basado en la grfica anterior, se va a crear un database link a la base remota
SALES.US.AMERICAS.ACME_AUTO.COM

CREATE DATABASE LINK sales.us.americas.acme_auto.com ... ;

Despus de la creacin del database link, las aplicaciones conectadas a la base de datos
local pueden acceder a la informacin de la base de datos remota, de la siguiente manera:

SELECT * from scott.emp @sales.us.americas.acme_auto.com

Para realizar la prctica se instal otra base de datos en la misma mquina, para poder
realizar el database link, la base de datos fue creada mediante la utilizacin del asistente
para la creacin de bases de datos, de esta forma quedaron instaladas en la mquina las
bases de datos DBCAREM y DBCAREM2, para crear el database link es necesario que el
listener conozca la ruta de las dos bases de datos, por encontrarse en la misma mquina no
fue necesario realizar cambios.

Al crear el database link no present ningn inconveniente, pero al ejecutar una instruccin
donde se utilizaba si, se presentaba un error, el cul significa que no puede localizar el
nombre de la base de datos.

Oracle Administracin de Bases de Datos Pgina 58


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
En la oficina con ayuda por parte de mi jefe se realizaron pruebas en dos bases de datos
montadas en el mismo servidor sobre ambiente Unix, las cuales fueron satisfactorias,
despus de realizar varios ensayos, se comentario una lnea del init.ora de cada una de las
bases de datos, las cuales poseen la siguiente informacin:

Global_names = true

Estas mismas lneas se encuentras en el archivo de configuracin de las bases de datos sobre
Unix y no impedian el funcionamiento del database link, pero en el caso de NT no permitian
que este funcionara.

Tipos de database links

Para soportar que la aplicacin acceda a los datos de bases de datos diferentes en un
ambiente distribuido, los administradores deben crear todos los database link necesarios,
existen diferentes tipos de database link como son:
PRIVATE
PUBLIC
GLOBAL DATABASE LINK

Private database link

Se puede crear un database link privado en un esquema especfico de la base de datos, de


forma que nicamente el dueo del database link privado, o subprograma PL/SQL en el
esquema pueda usar el database link para acceder a datos y objetos en la correspondiente
base de datos remota.

Public database link

Es el caso contrario donde todos los usuarios pueden acceder a los datos y objetos en la
correspondiente base de datos remota.

Oracle Administracin de Bases de Datos Pgina 59


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Global database link

Cuando una red ORACLE utiliza Oracle names, los nombres de los servidores
automticamente crean y manejan global database links por cada base de datos Oracle en la
red, de esta forma todos los usuarios y subprogramas en una base de datos pueden acceder a
la informacin y objetos de las dems bases de datos en la red.

Un private database link es ms seguro que un public database link y que un global database
link, ya que el dueo es el nico que puede acceder a la base de datos distribuida.

Cuando se requiere que muchos usuarios accedan a la informacin de otra base de datos, lo
ms recomendable es la creacin de un public database link.

Cuando se trabaja en un ambiente Oracle Network que utilice Oracle names, la


administracin de los database links es centralizada y simple.

Opciones de seguridad para database link

Un database link define un camino de comunicacin entre dos bases de datos. Cuando una
aplicacin usa un database link para acceder a la base de datos remota, Oracle establece una
sesin en la base de datos remota.
Cuando se crea el database link pblico o privado, se puede establecer el esquema de
trabajo en el base de datos remota, mediante la asignacin del usuario con el cual va a
ingresar a la base de datos remota.

Sintaxis de CREATE DATABASE LINK

Oracle Administracin de Bases de Datos Pgina 60


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
Parmetros:
Shared : Utiliza una conexin de red para crear un database link que pueda ser
compartido por mltiples usuarios.
Public : Crea un database link pblico disponible para todos los usuarios, si se
omite esta palabra el database link es privado y solo es disponible para el usuario que lo
crea.
Dblink : Es el nombre completo o parcial del database link, las restricciones
corresponden a que no se puede crear otro database link con el mismo nombre en otro
esquema.
Connect to : Habilita una conexin a la base de datos remota.
Current_user : Crea el link con el usuario actual, de modo que el usuario debe poseer una
cuenta vlida en el servidor remoto.
User identified by : Es el nombre y password del usuario con el que se conecta a la base de
datos remota.

Ejemplos

CREATE DATABASE LINK sales.hq.acme.com


CONNECT TO CURRENT_USER
USING sales;

Oracle Administracin de Bases de Datos Pgina 61


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.
CREATE DATABASE LINK sales.hq.acme.com
CONNECT TO scott IDENTIFIED BY tiger
USING sales;

Oracle Administracin de Bases de Datos Pgina 62


Presentado por Carlos Mayorga al Ing. Ismael Castaeda F.

También podría gustarte