Download Principios de Administración

Document related concepts

Área Global del Sistema wikipedia , lookup

Redo Log File wikipedia , lookup

Oracle Database wikipedia , lookup

Automatic Storage Management wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Transcript
ADMINISTRACIÓN
El presente trabajo pretende explicar la administración de una base de datos ORACLE, lo
que considero más importante para poder desarrollar las tareas administrativas, es el
conocimiento de la estructura interna del motor, mas que los comandos en sí, por esta razón
se comienza con una descripción de la organización interna del motor y posteriormente se
verán los comandos y las tablas que se deben consultar.
Responsabilidades del DBA
•
Instalar y actualizar el servidor y las herramientas de desarrollo.
•
Creación de bases de datos, estructuras de almacenamiento y objetos primarios.
•
Localizar el espacio físico y planear los requerimientos futuros para las bases de datos.
•
Modificar la estructura de la base de datos
•
Administración de usuarios
•
Controlar y monitorear los accesos a la base de datos
•
Backup y recuperación
•
Mantenimiento de la seguridad del sistema
•
Monitorear y optimizar el desempeño 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 aproximación abierta e integrada para el manejo de información.
2. Conexión a la base de datos
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 1
El usuario que necesite interactuar con el servidor Oracle necesita primero establecer una
conexión 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 aplicación,
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 máquina que esta ejecutando el
Servidor Oracle. Este proceso se conoce como proceso servidor.
PL/SQL Es una extensión del lenguaje que ofrece la estructura procedimental de bloques
combinado con las capacidades no procedimentales de SQL.
Las herramientas de desarrollo de 4ª generación, 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 máquina cliente
•
Se crea cuando se invoca una herramienta o aplicación
•
Corre la herramienta o aplicación (SQL*PLUS, Server Manager, OEM,
Developer/2000)
•
Genera llamados al Servidor Oracle
4. Proceso Servidor
•
Corre en la máquina servidor (host)
•
Atiende a un sólo proceso usuario (servidor dedicado)
•
Procesa los llamados generados por el cliente
•
Devuelve resultados al cliente
5. Instancia Oracle
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 2
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 específica llamada
sistema de área global (System global area SGA). A la combinación de buffers de
memoria y procesos de fondo se le denomina una instancia de Oracle. La colección de
archivos físicos 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 combinación de la SGA y los procesos de background, la información
contenida en los archivos de parámetros determinan las características de una instancia,
como son: El tamaño del SGA y número de procesos entre otros.
6. Base de Datos Oracle
Una Base de datos Oracle representa las estructuras físicas 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
Término
Significado
Database
Colección lógica de datos almacenados en tablespaces.
File
Archivo de datos físicos ubicados en un solo tablespace.
Tablespace
Repositorio lógico para agrupar datos fisicamente.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 3
Segment
Conjunto de uno o mas extents, que contiene todos los datos para una
estructura específica contenida en un tablespace.
Block
Bloque físico que localiza los datos existentes en un archivo ( Es un
componente de los archivos físicos, un archivo físico se compone de
varios bloques).
7. Otras estructuras físicas
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 instrucción, el código parseado, y el
plan de ejecución
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 4
•
El Data Dictionary Cache contiene las definiciones y privilegios de tablas y
columnas
10. Database Buffer Cache
•
Número de bloques definidos por DB_BLOCK_BUFFERS
•
Tamaño del buffer basado en DB_BLOCK_SIZE
•
Almacena los bloques más recientemente usados
11. Program Global Area (PGA)
•
No compartida y no escribible.
•
Contiene :
•
Sort area
•
Información de la sesión
•
Estado de los cursores
•
Espacio de pila
12. Segmento de Rollback
Antes de efectuar una modificación, el proceso servidor almacena el valor previo en un
segmento de rollback.
13. Redo Log Buffer
•
Tamnaño definido por LOG_BUFFER
•
Registra las modificaciones hechas a través de la instancia
•
Usado secuencialmente
•
Buffer circular
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 5
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 número 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 efectúa 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 información para indicar que la transacción está
completa y que han sido liberados los locks en los recursos.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 6
II.
Uso de las herramientas administativas
1. Ejemplos
Herramienta
Descripción
Server Manager
Usada para subir, bajar o recuperar una base
de datos
Oracle Enterprise Manager
Herramienta
gráfica
para
administrar,
monitorear, y afinar múltiples 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
En NT
svrmgrl
svrmgr30
Iniciando y ejecutando un script
En Unix
En NT
svrmgrl [email protected]
svrmgr30 [email protected]
3. Oracle Enterprise Manager (OEM)
Oracle Enterprise Manager (OEM) consiste de una consola centralizada, agentes
inteligentes, y un paquete de aplicaciones estándar que proporcionan a los
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 7
administradores de la base de datos la funcionalidad que necesitan para manejar sus
bases de datos.
También existe un paquete de aplicaciones integradas conociadas como el OEM
Performance Pack, que proporcionan monitoreo, diagnóstico y afinamiento experto y
avanzado
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 8
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 :
3.
•
Creados automáticamente
•
Privilegiados con el role DBA
SYS Y SYSTEM
•
SYS
Password : change_on_install
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 9
Dueño del diccionario de datos de la base de datos
•
SYSTEM
Password : manager
Dueño de tablas internas adicionales usadas por herramientas Oracle
4. Autenticación 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. Autenticación 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 parámetros
El archivo de parámetros, comúnmente conocido como el initSID.ora, es un archivo de
texto que puede mantenerse usando un editor estándar del sistema operativo.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 10
El archivo de parámetros 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
parámetros surtan efecto.
Los parámetros en el archivo initSID.ora tienen un efecto significativo en el desempeño
de la base de datos :
•
Dimensionan el tamaño de los componentes de la SGA
•
Establecen defaults para la instancia y la base de datos
•
Establecen límites en la base de datos
•
Definen (en creación de la base de datos) varios atributos físicos de la base de datos,
como el tamaño del bloque
•
Especifiación de los constrol files, archived log files, y ubicaciones de los archivos
de trace
7. Parámetros que deberían especificarse
BACKGROUND_DUMP_DEST
COMPATIBLE
CONTROL_FILES
DB_BLOCK_BUFFERS
DB_NAME
SHARED_POOL_SIZE
USER_DUMP_DEST
8. Parámetros comúnmente modificados
IFILE
LOG_BUFFER
MAX_DUMP_FILE_SIZE
PROCESSES
SQL_TRACE
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 11
TIMED_STATISTICS
9. Startup y Shutdown en etapas
STARTUP
•
NOMOUNT
•
MOUNT
•
OPEN
SHUTDOWN
•
NORMAL
•
TRANSACTIONAL
•
IMMEDIATE
•
ABORT
10. Vistas dinámicas de desempeño
•
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 sinónimos públicos con el prefijo V$
V$PARAMETER
V$SGA
V$OPTION
V$PROCESS
V$SESSION
V$VERSION
V$INSTANCE
V$CONTROLFILE
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 12
V$DATABASE
V$DATAFILE
V$LOGFILE
11. Obteniendo los valores actuales de los parámetros
•
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 sesión 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 13
IV.
Creación 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. Planeación de la ubicación 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 contención por recursos en disco
- Tienen distinta duración
- Tienen distintas características administrativas
3. Organización del sofware de Oracle
/u01/app/oracle
/u02/app/applmgr
/u02/oradata
/u03/oradata
4. Creación de una Base de Datos: Consideraciones
•
En Unix
- Creada automáticamente durante una instalación
- Creada manualmente después de la instalación
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 14
•
En NT
- Creada usando el Oracle Database Assistant
- Creada manualmente
5. Creación 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 parámetros
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 creación
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. Preparación del archivo de parámetros
1. Crear el nuevo init<SID>.ora
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 15
2. Modificar el initu16.ora editando los parámetros
8. Subir la instancia
1. Conectarse como SYSDBA
2. Subir la instancia en estado NOMOUNT
SVRMGR> startup nomount pfile=initu16.ora
9. Creación 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 creación 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. Después de la creación de la Base de Datos
La Base de Datos contiene:
* Datafiles que pertenecen al tablespace SYSTEM
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 16
* 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 17
V. Creación de las Vistas del Diccionario de Datos y Paquetes Estándar
1. Uso del Diccionario de Datos
El Diccionario de Datos proporciona información a cerca de:
* Estructura lógica y física de la base de datos
* Nombres, definiciones y localización de espacio de algunos objetos
* Constraints de integridad
* Usuarios y privilegios de la base de datos
* Auditoría
2. Tablas base y vistas del diccionario de datos
Vistas del diccionario de datos:
* Simplifican la información 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 18
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. Creación de Vistas del Diccionario de Datos
Script
Propósito
Catalog.sql
Crea las vistas más comúnmente 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
Información del catálogo y del diccionario de datos
dbms*.sql Especificaciones de paquetes de la base de datos
prvt*.plb
Código encriptado de la base de datos
utl*.sql
Vistas y tablas para utilidades
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 19
7.
Procedimientos y paquetes almacenados
Son objetos de la Base de Datos que permiten almacenar unidades de programación
PL/SQL y se ejecutan usando herramientas Oracle como SQL*Plus, Server Manager o
Enterprise Manager, o ejecutándolas desde una aplicación 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 parámetros
•
Pueden usarse en funciones SQL
9. Qué son los Paquetes?
•
Agrupación de tipos, items y subprogramas PL/SQL lógicamente relacionados
•
Tienen dos partes:
•
-
Una especificación
-
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. Información delos objetos almacenados
•
Vista DBA_OBJECTS del diccionario de datos
-
OWNER
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 20
•
-
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
-
Después de crear los objetos con la utilidad IMPORT
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 21
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 información acerca de la consistencia de la Base de
Datos usada durante la recuperación.
•
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
•
Ubicación de los data files y de los redo log files
•
Nombres de los tablespaces
•
Fecha de la ceación de la Base de Datos
•
Número actual de secuencia del log
•
Información de checkpoint
•
Historia del log
3. Parámetros que afectan el tamaño del Control File
•
MAXLOGFILES
•
MAXLOGMEMBERS
•
MAXLOGHISTORY
•
MAXDATAFILES
•
MAXINSTANCES
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 22
4. Obteniendo información
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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 23
VII.
1.
Mantenimiento de los Redo Log Files
Uso de los Redo Log Files
•
El servidor Oracle mantiene online redo log files para minimizar la pérdida 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 recuperación.
2. Grupos y miembros de Redo Log
Grupos
•
Un conjunto de copias idénticas de los Online redo log files se llama un Online redo
log group
•
El proceso LGWR escribe simultáneamente la misma infromación a todos los Online
redo log files en un grupo
•
Oracle requiere almenos de dos Online redo log groups para la operación 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” idénticos y el mismo
tamaño. 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 24
•
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 opción NORMAL O IMMEDIATE
•
Parámetros LOG_CHECKPOINT_INTERVAL y LOG_CHECKPOINT_TIMEOUT.
4. Información acerca de los grupos
V$THREAD
Ejemplo: SELECT groups, current_group#, sequence#
FROM V$thread;
5. Información acerca de grupos y miembros
V$LOG
Ejemplo: SELECT group#, sequence#, bytes, members, status
FROM v$log;
V$LOGFILE
Ejemplo: SELECT *
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 25
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 parámetros:
LOG_CHECKPOINT_INTERNAL
LOG_CHECKPOINT_TIMEOUT
7. Adición de Online Redo Log Groups
ALTER DATABASE
ADD LOGFILE (‘/DISK3/log3a.rdo’,’/DISK4/log3b.rdo’)
SIZE 1M;
8. Adición de Online Redo Log Members
ALTER DATABASE
ADD LOGFILE MEMBER
‘/DISK4/log1b.rdo’ TO GROUP 1,
‘/DISK4/log2b.rdo’ TO GROUP 2;
9. Cómo relocalizar Online Redo log Files
1- Bajar la Base de Datos
2- Copiar los online redo log files a la nueva ubicación
3- Montar la Bade de Datos
4- Ejecutar el comando ALTER DATABASE RENAME FILE
5- Abrir la Base de datos
10. Eliminación de Online Redo Log Groups
ALTER DATABASE DROP LOGFILE GROUP 3;
11. Eliminación de Online Redo Log Members
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 26
ALTER DATABASE DROP LOGFILE MEMBER
‘/DISK4/log2b.rdo’;
12. Posibles errores del LGWR
•
No está disponible un miembro de un grupo de dos o más miembros
•
No están disponibles todos los miembros del siguiente grupo
•
No están disponibles todos los miembros del grupo actual
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 27
VIII.
Manejo de Tablespaces y Data Files
1. Vistazo
La arquitectura de la Base de Datos incluye las estructuras lógicas y físicas que la
conforman.
La estructura física consiste de control files, online redo log files y data files.
La estructura lógica incluye tablespaces, segmentos, extents y data blocks.
2. Estructura de la Base de Datos
Una Base de Datos Oracle puede dividirse en áreas lógicas de espacios más pequeños
conocidas como “Tablespaces”
Tablespaces
•
Un tablespace puede pertenecer a sólo una Base de Datos
•
Cada tablespace consiste de uno o más 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 localización de espacio y asignación 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
desempeño y reducir la contención
•
Ejecución de operaciones de backup o recuperación parcial
•
Mantener gran cantidad de datos estáticos en dispositivos read-only
Data Files
Cada tablespace consiste de uno o más archivos llamados “data files”
•
Un data file puede pertenecer a solo un tablespace
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 28
•
Oracle crea un datafile para un tablespace ubicando la cantidad especificada de
espacio en disco
•
El DBA puede modificar el tamaño de un data file posterior a su creación o puede
especificar que un data file puede crear dinámicamente a medida que crecen los
objetos en el tablespace
Segmentos
Un segmento es el espacio localizado para un tipo específico de estructura lógica 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 lógico de la Base de Datos se conoce como un extent. Un
extent es un conjunto de bloques contigüos. Cada tipo de segmento está conformado por
uno o más extents. Un extent debe existir en un data file.
Data blocks
Un data Block corresponde a uno o más bloques físicos localizados para un data file
existente.
Se especifica un tiempo de creación de la Base de Datos por el parámetro de
inicialización DB_BLOCK_SIZE. Un data block es la unidad mínima de entrada –
salida.
3. Tablespaces SYSTEM y NO-SYSTEM
El tablespaces SYSTEM contiene:
•
Información del diccionario de datos
•
Segmento de rollback SYSTEM
Los tablespaces NO-SYSTEM contienen:
•
Segmentos de rollback
•
Segmentos temporales
•
Datos de la aplicación
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 29
•
Indices de la aplicación
4. Creación 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. Parámetros 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. Adición de Data Files a un tablespace
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 30
Se puede aumentar el tamaño de dos formas:
•
Agregar un data file a un tablespace
•
Cambiar el tamaño 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 tamaño de un data file de dos formas:
•
Automáticamente usando la opción 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. Modificación manual del tamaño de los data files
ALTER DATABASE DATAFILE
‘/DISK/app02.dbf’ RESIZE 200M;
10. Modificación de los parámetros 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 31
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. Eliminación de tablespaces
La siguiente instrucción elimina el tablespace APP_DATA y todo su contenido
Ejemplo: DROP TABLESPACE app_data
INCLUDING CONTENTS;
15. Información de los tablespaces
DBA_TABLESPACES
Ejemplo: SELECT tablespace_name, initial_extent, next_extent,
max_extents, pct_increase.
FROM dba_tablespaces;
16. Información 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 parámetros de almacenamiento
•
Asignar espacio en los tablespace a los usuarios
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 32
IX.
Estructuras de almacenamiento
1. Jerarquía de almacenamiento en la Base de Datos
•
Una base de datos está agrupada lógicamente en tablespaces
•
Un tablespace puede consistir de uno o más segmentos
•
Cuando se crea un segmento, consiste de al menos un extent el cual es un conjunto de
bloques contigüos. A medida que crece el segmento se adicionan extents al segmento
•
Un bloque, es la unidad más pequeña usada para operaciones read-write
2. Tipos de segmentos
Tabla: Es el medio más común 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 más 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 propósito de
este índice es buscar la ubicación de las filas en la tabla basado en un valor específico.
Rollback: Es usado por una transacción 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 instrucción 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, imágenes, o videos.
3. Procedencia de la cláusula STORAGE
•
Cualquier parámetro de storage especificado a nivel de segmento ignora la opción
correspondiente establecida a nivel de tablespace
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 33
•
Cuando no se establecen explícitamente parámetros de storage a nivel de segmento,
toman el valor de aquellos establecidos a nivel de tablespace
•
Cuando no se establecen explícitamente parámetros de storage a nivel de tablespace,
aplican los defaults de Oracle.
4. Localización y De–Localización de extents
•
•
Localizados cuando el segmento se:
-
Crea
-
Extiende
-
Altera
De-Localizados cuando el segmento se:
-
Elimina
-
Altera
-
Trunca
-
Contrae automáticamente (ú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 contigüo 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 mínima de I/O
•
Consiste de uno o más bloques del Sistema Operativo
•
Establecido por DB_BLOCK_SIZE
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 34
•
Establecido cuando se crea la base de datos
Cada data block contiene:
-
Header
-
Espacio libre
-
Datos
7. Parámetos de utilización del espacio en un bloque
INITRANS
MAXTRANS
PCTFREE
PCTUSED
8. Información 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 35
Parámetros de almacenamiento.
•
INITIAL
•
NEXT
•
MAXEXTENTS
•
MINEXTENTS
•
PCTINCREASE
•
OPTIMAL
•
FREELISTS
Parámetros de utilización de espacio
PCTFREE
PCTUSED
INITRANS
MAXTRANS
BLOQUES DE LA BASE DE DATOS
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 36
Propiedades
•
Un bloque corresponde a uno o mas bloques físicos en disco.
•
El tamaño se determina al crear la base de datos, y en el parámetro DB_BLOCK_SIZE y
es constante en todos los datafiles.
•
El DB_BLOCK_SIZE también determina el tamaño de cada buffer en el SGA.
•
Los bloques de base de datos también son conocidos como bloques lógicos y bloques
ORACLE.
•
Una vez creada la base de datos, el parámetro DB_BLOCK_SIZE no puede ser
cambiado.
•
El tamaño típico del bloque es 2K o 4K. El valor por defecto depende del sistema
operativo.
•
En algunas plataformas el tamaño del bloque puede ser muy grande (Por ejemplo 32 K).
Este bloque es conocido como BIG ORACLE BLOCKS.
•
Todas las operaciones de I/O, están implementadas para trabajar a nivel de bloques.
•
El servidor de Oracle mantiene bloqueos a nivel de fila.
Partes de un Database Block
Parte
Descripción
Header
Contiene la información general del bloque, como la dirección y el tipo de segmento.
Table directory
Almacena la información acerca de las tablas presentes en el bloque.
Row directory
Contiene información 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 información del directorio de tablas y el directorio de
filas.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 37
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
parámetros.
♦ 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 parámetros aplican a tablas,
clusters, y vistas usando los comandos CREATE y ALTER. PCTFREE puede ser
especificado para indices.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 38
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 número de transacciones localizadas inicialmente en el encabezado del
bloque.
MAXTRANS indica el máximo número de transacciones que pueden acceder al bloque
concurrentemente.
En el caso 1, se pueden insertar filas en el bloque ya que la utilización 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
utilización del bloque puede estar por debajo del 80%, sin embargo el bloque no es usado
para inserciones hasta que la utilización del bloque caiga por debajo de PCTUSED.
En el caso 4, cuando el nivel baja de PCTUSED el bloque queda disponible para inserción.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 39
Asignar un valor bajo al parámetro PCTFREE
♦ Permite inserciones para llenar bloques más completamente.
♦ Puede requerir menos bloques para almacenar datos.
♦ Puede incrementar los costos de proceso si se requiere de reorganización de bloques
frecuentemente.
♦ Puede causar migración de filas.
Asignar un valor alto al parámetro PCTFREE
♦ Reserva mas espacio para actualizaciones.
♦ Puede requerir mas bloques para almacenar datos.
♦ Bajos costos de proceso porque los bloques pueden requerir reorganización con poca
frecuencia.
♦ Reduce la necesidad de encadenar filas.
Asignar un valor bajo al parámetro PCTUSED
♦ Reduce el costo de procesamiento porque los bloques no son liberados frecuentemente.
♦ Incrementa el espacio sin utilizar.
Asignar un valor alto al parámetro 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 número inicial de entradas de transacciones, para transacciones concurrentes, estas son
localizadas en cada encabezado de bloque, cuando un bloque es localizado (Por defecto 1,
mínimo 1, máximo 255). Cada entrada de transacción es aproximadamente de 23 byter de
longitud (Depende del sistema operativo).
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 40
MAXTRANS
Es el máximo número de transacciones concurrentes que puede soportar un bloque (Máximo
255).
El valor por defecto para MAXTRANS depende del sistema operativo, pero usualmente es
de 255.
Cada transacción 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 contigüos. 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 más grande que el óptimo y contiene extents libres (Unicamente para
segmentos de rollback).
Características de los extents
♦ Cada segmento en una base de datos es creado con el menor número de extents para
almacenar los datos.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 41
♦ 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 liberación de extents puede ocasionar una defragmentación 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 contígüos físicamente en disco.
Control de la localización de los extents
Parámetro
Descripción
INITIAL
Tamaño en bytes del primer extent localizado en el segmento, por
defecto equivale a cinco data blocks.
NEXT
Tamaño en bytes de los extents siguientes, por defecto equivale a
cinco data blocks.
MAXEXTENTS
Número total de extents que pueden ser localizados en el
segmento, el tamaño máximo depende del tamaño de los bloques
de Oracle, por ejemplo 121 para bloques de 2K.
MINEXTENTS
Número 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 tamaño optimo en bytes para los segmentos de
rollback.
FREELIST
Número de listas de bloques libres para inserción en na tabla. Por
defecto es uno.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 42
FREELIST GROUPS
Número de freelist para ser usado en diferentes instancias de un
Parallel Server.
Representación del almacenamiento en Oracle.
En la gráfica anterior se presentan las tablas de las cuales se saca la información necesaria
para presentar en la aplicación.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 43
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 información como
el código del archivo, código del bloque y también datos como existían antes de ser
modificados.
El encabezado de un segmento de rollback contiene una tabla donde se almacena
información acerca de las transacciones que está usando el segmento.
Una transacción 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: Propósito
•
Rollback de la transacción
•
Recuperación de la transacción
•
Consistencia en la lectura
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 44
XI.
Auditoría de la base de datos.
Privilegios de operación de la auditoría
-
Auditoría siempre
-
Iniciar la base, bajar la base y conexiones de SYSDBA
Auditoría de la base de datos
-
Habilitada por DBA
-
Incapaz de grabar registros en la base de datos
Valores base de auditoría en aplicaciones
-
Implementación mediante código
-
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 auditoría registra el usuario del sistema operativo quien inicia la
instancia, identificación de la terminal y la fecha y la hora y cuando la auditoría es
habilitada o inhabilitada.
-
Bajar una instancia, de forma similar se registra la información 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 información del usuario que ingresa como SYSOPER o SYSDBA.
1. Auditoría de la base de datos
Auditoría es el monitoreo y grabación de acciones seleccionadas de los usuarios. La
información 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 autorización 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 45
Puede por medio de la auditoría registrar estadísticas de las tablas mas actualizadas y/o
consultadas, para afinar las operaciones de Entrada/Salida.
2. Auditoría de valores base
La auditoría 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 auditoría
de aplicaciones. La auditoría de aplicaciones se realiza mediante código en la herramienta
cliente, procedimientos almacenados, o triggers de la base de datos.
Para verificar la auditoría básica sobre conexiones, se puede examinar el visor de sucesos
de Windows NT, en la parte de Registro de aplicación.
3. Demostración de auditoria de valores base
Se posee una tabla de empleados, donde tenemos los siguientes campos:
Codigo
Nombre
Direccion
Teléfono
Por alguna razón se desea conservar la historia de los valores contenidos en esta tabla, en
caso de que se cambie la dirección o el teléfono 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
código.
CREATE TRIGGER auditoria_empleados
AFTER INSERT OR DELETE OR UPDATE
ON empleados
FOR EACH ROW
BEGIN
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 46
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 información en la tabla aud_empleados (La tabla aud_empleados
debe ser creada por el administrador o alguna persona encargada de la auditoría).
4. Usando auditoría de la base de datos
El administrador de la base de datos debe definir claramente el propósito de la auditoría, de
lo contrario puede que la información generada por la auditoría pueda crecer
desmesuradamente, sin ofrecer información valiosa, por otro lado puede llegar a degradar el
desempeño de la base de datos.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 47
Habilitar la auditoría de la base de datos
Una vez que se decide que auditar, se debe asignar el parámetro de inicialización
AUDIT_TRAIL, para que habilite la auditoría para la instancia. Este parámetro indica si la
pista de auditoría se escribe a una tabla de la base de datos o a la pista de auditoría del
sistema operativo.
5. Especificación de las opciones de auditoría
El siguiente paso es especificar las opciones de auditoría usando el comando AUDIT, con
este comando se indica cuales comandos, usuarios, objetos o privilegios auditar. Se puede
indicar si un registro de auditoría debe ser generado por cada ocurrencia o una vez por
sesión. Si una opción de auditoría no es necesaria, se puede desabilitar la opción con el
comando NOAUDIT.
6. Ejecución de instrucciones
Cuando un usuario ejecuta una instrucción SQL o PL/SQL, el servidor procede a examinar
las opciones de auditoría, para determinar si la ejecución del mismo debe generar algún
registro de auditoría. Si el comando SQL se encuentra dentro de un programa PL/SQL, es
necesario que sea ejecutado dicho comando para que se registre la auditoría, el bloque de
instrucciones debe pasar por dicho comando y puede llegar a generar varios registros de
auditoría.
7. Generación de datos de auditoría
La generación e inserción de un registro de auditoría, es independiente de la transacción del
usuario; esto es, si la transacción del usuario realiza rollback, el registro de auditoria
permanece intacto. Sin embargo el registro de auditoría es generado durante la fase de
ejecución, lo cual significa que si el comando posee un error de sintaxis no se genera un
registro de auditoría.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 48
8. Revisión de la información de auditoría
La información de la auditoría se revisa, mediante selecciones a la pista de auditoría de
vistas del diccionario de datos o usando la utilidad del sistema operativo. Esta información
es utilizada para investigar actividades sospechosas y monitorear la actividad de la base de
datos.
9. Habilitando la auditoría de la base de datos
El administrador de la base de datos asigna al parámetro de inicialización AUDIT_TRAIL
habilitar la auditoría para la instancia.
Sintaxis
AUDIT_TRAIL = valor
Donde valor puede tomar uno de los siguientes valores:
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 49
VALOR
DESCRIPCION
DB
Habilita la auditoría y direcciona todos los registros de auditoría a la pista de
auditoría de la base de datos (sys.aud$)
OS
Habilita la auditoría y direcciona todos los registros de auditoría a la pista de
auditoría del sistema operativo. (Si es permitido por este)
NONE
Deshabilita la auditoría (Este es el valor por defecto).
Nota curiosamente al buscar el parámetro en el init.ora, se encontró que el parámetro estaba
comentariado y poseía el siguiente valor.
#audit_trail = true
Este valor no se menciona como un posible valor para ser asignado al parámetro.
Buscando en la documentación se encuentra que se puede asignar el valor TRUE al
parámetro y se comporta como si fuera DB, anotan que es por compatibilidad con versiones
anteriores.
10. Habilitando las opciones de auditoría
♦ 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 auditoría. Estos registros de
auditoría nunca son generados por sesiones del usuario SYS o conexiones como
INTERNAL.
Instrucciones de auditoría
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 50
Se pueden ingresar los comandos de auditoría 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.
Auditoría de privilegios
La auditoría 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 auditoría, cuando el usuario realiza una consulta sobre una tabla en la cual no
tiene privilegios no se genera el registro de auditoría.
Sintaxis de los comandos de auditoría
Privilegios o auditoría de instrucciones
AUDIT {statement|system_priv}
[,{statement|system_priv}]....
[BY user [, user]...]
[BY {SESSION|ACCESS} ]
[WHENEVER [NOT] SUCCESSFUL]
Auditoría de objetos
AUDIT statement [,statement]...
ON {[schema.]objeto|DEFAULT}
[BY {SESSION|ACCESS}]
[WHENEVER [NOT] SUCCESSFUL]
Donde:
Statement
Especifica la instrucción SQL o el esquema-objeto a auditar.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 51
System_priv
Especifica el privilegio del sistema a auditar.
Schema.schema-object
Especifica el objeto seleccionado para auditoría.
Default
Conjunto de objetos específicos como objetos por defecto.
User
Indica el usuario sobre el cual realizar la auditoría, 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 sesión, esta es la opción
por defecto, excepto para instrucciones DDL.
BY ACCESS
Origina que Oracle inserte un registro en el audit trail, cada vez
que una instrucción auditada es enviada.
WHENEVER
Especifica que la auditoría sea realizada únicamente para
instrucciones satisfactorias o fallidas. El valor por defecto es
ambas.
Es importante anotar que en caso de realizarse la auditoría a instrucciones fallidas, no tiene
en cuenta una consulta de una tabla que no exista, el registro de auditoría es realizado
durante la fase de ejecución.
La auditoría de privilegios e instrucciones especificadas por el comando AUDIT, solo
aplican para las sesiones siguientes, no para las sesiones activas, en cambio la auditoría
sobre objetos se hace efectiva inmediatamente.
11. Auditoría de esquema de objetos
IV.
Opción
Objeto
XII.
TABLA
VISTA
SECUENCIA
PROCEDIMIENTO
SNAPSHOT
ALMACENADO
ALTER
X
X
AUDIT
X
X
COMMENT
X
X
X
DELETE
X
X
X
EXECUTE
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
X
X
X
X
X
Página 52
GRANT
X
X
X
X
X
INDEX
X
INSERT
X
X
X
LOCK
X
X
X
RENAME
X
X
SELECT
X
X
UPDATE
X
X
X
READ
X
X
X
X
X
Observar las opciones de auditoría
Vista del diccionario de datos
Descripción
ALL_DEF_AUDIT_OPTS
Opciones de auditoría por defecto
DBA_STMT_AUDIT_OPTS
Opciones de auditoría de instrucciones
DBA_PRIV_AUDIT_OPTS
Opciones de auditoría de privilegios
DBA_OBJ_AUDIT_OPTS
Opciones de auditoría de objetos
12. Desabilitar las opciones de auditoría
♦ NOAUDIT user WHENEVER SUCCESSFUL;
♦ NOAUDIT create table BY scott;
♦ NOAUDIT LOCK ON emp;
La instrucción NOAUDIT para la auditoría especificada en el comando.
NOAUDIT {statement|system_priv}
[, {statement|system_priv} ] . . .
[BY user [, user ] . . . ]
[WHENEVER [NOT] SUCCESFULL]
NOAUDIT statement [,statement ] . . .
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 53
ON {[schema.]object | DEFAULT}
[WHENEVER [NOT] SUCCESSFUL ]
La instrucción NOAUDIT reversa el efecto de una instrucción AUDIT previa.
La instrucción NOAUDIT puede tener la misma sintaxis de una instrucción AUDIT previa y
con ello desabilitar la auditoría que se había establecido, sin embargo, si una instrucción
AUDIT (Instrucción 1) habilita la auditoría para un usuario específico, y una segunda
instrucción AUDIT (Instrucción 2) habilita la auditoría para todos los usuarios, al ejecutar
una instrucción NOAUDIT que desabilite la auditoría para todos los usuarios, ésta reversa la
Instrucción 2, pero permite que la auditoría asignada con la Instrucción 1 continúe.
13. Viendo los resultados de la auditoría
La pista de auditoría:
♦ Almacena los registros generados por instrucciones, privilegios y objetos auditados.
♦ El registro de auditoría está almacenado en la tabla del diccionario de datos SYS.AUD$
o en el registro de auditoría del sistema operativo.
♦ Cada registro en la pista de auditoría incluye:
§
El usuario quien ejecutó la instrucción
§
El comando emitido
§
Cualquier privilegio de objeto usado
§
Los objetos referenciados en la instrucción
§
La fecha y hora de ejecución de la instrucción
Localización de la pista de auditoría
Los registros de auditoría pueden ser almacenados en una tabla del diccionario de datos,
llamada la base de datos de pistas de auditoría (Database Audit Trail) o en la pista de
auditoría del sistema operativo.
Contenido de la pista de auditoría
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 54
Cada registro de la pista de auditoría incluye:
♦ El nombre del usuario
♦ La identificación de la sesión
♦ La identificación de la terminal
♦ El nombre del objeto accesado
♦ La operación desempeñada
♦ El código completo de la operación
♦ La fecha y la hora
♦ Los privilegios del sistema utilizados
Vista de la pista de auditoría
Descripción
DBA_AUDIT_TRAIL
Todas las entradas de la pista de auditoría
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 auditoría de instrucciones
Recomendación mover la pista de auditoría fuera del tablespace system, ya que la pista de
auditoría puede ser muy extensa.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 55
XIII.
Comunicación con un servidor remoto
1. Resolución del esquema de nombres de objetos
Para que una aplicación resuelva las referencias del esquema de objetos (Un proceso
llamado name resolution), Oracle utilizar una jerarquía 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 solución es agregando a la
jerarquía de nombres el nombre global de la base de datos.
2. Conexión 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 versión 7.
3. Bases de datos distribuidas y procesos distribuidos
Los términos 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 aplicación como una sola base de datos.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 56
Proceso distribuido: Ocurre cuando una aplicación distribuye tareas en diferentes
computadores en una red.
4. Comunicación entre servidores
La forma de establecer la comunicación entre dos bases de datos ORACLE es mediante un
database link, por lo menos fue una forma de comunicación que encontré. Cada base de datos
es conocida por un global database name, este se encuentra definido por el dominio de la
máquina y por el nombre de la base de datos, de esta forma se puede lograr la comunicación
a través de una red, intranet o internet.
En la figura se describe una base de datos distribuida.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 57
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 comunicación 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 gráfica 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 ... ;
Después de la creación del database link, las aplicaciones conectadas a la base de datos
local pueden acceder a la información de la base de datos remota, de la siguiente manera:
SELECT * from scott.emp @sales.us.americas.acme_auto.com
Para realizar la práctica se instaló otra base de datos en la misma máquina, para poder
realizar el database link, la base de datos fue creada mediante la utilización del asistente
para la creación de bases de datos, de esta forma quedaron instaladas en la máquina 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 máquina no
fue necesario realizar cambios.
Al crear el database link no presentó ningún inconveniente, pero al ejecutar una instrucción
donde se utilizaba si, se presentaba un error, el cuál significa que no puede localizar el
nombre de la base de datos.
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 58
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,
después de realizar varios ensayos, se comentario una línea del init.ora de cada una de las
bases de datos, las cuales poseen la siguiente información:
Global_names = true
Estas mismas líneas se encuentras en el archivo de configuración 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 aplicación 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 específico de la base de datos, de
forma que únicamente el dueño 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 59
Global database link
Cuando una red ORACLE utiliza Oracle names, los nombres de los servidores
automáticamente 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 información y objetos de las demás bases de datos en la red.
Un private database link es más seguro que un public database link y que un global database
link, ya que el dueño es el único que puede acceder a la base de datos distribuida.
Cuando se requiere que muchos usuarios accedan a la información de otra base de datos, lo
más recomendable es la creación de un public database link.
Cuando se trabaja en un ambiente Oracle Network que utilice Oracle names, la
administración de los database links es centralizada y simple.
Opciones de seguridad para database link
Un database link define un camino de comunicación entre dos bases de datos. Cuando una
aplicación usa un database link para acceder a la base de datos remota, Oracle establece una
sesión en la base de datos remota.
Cuando se crea el database link público o privado, se puede establecer el esquema de
trabajo en el base de datos remota, mediante la asignación del usuario con el cual va a
ingresar a la base de datos remota.
Sintaxis de CREATE DATABASE LINK
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 60
Parámetros:
Shared
: Utiliza una conexión de red para crear un database link que pueda ser
compartido por múltiples usuarios.
Public
: Crea un database link público 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 conexión a la base de datos remota.
Current_user : Crea el link con el usuario actual, de modo que el usuario debe poseer una
cuenta válida 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 – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 61
CREATE DATABASE LINK sales.hq.acme.com
CONNECT TO scott IDENTIFIED BY tiger
USING ‘sales’;
Oracle – Administración de Bases de Datos
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Página 62