Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Oracle Admon PDF
Oracle Admon PDF
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.
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
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.
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
9. El Shared Pool
• No compartida y no escribible.
• Contiene :
• Sort area
• Información de la sesión
• Estado de los cursores
• Espacio de pila
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.
El proceso Log Writer (LGWR) es un proceso de background que escribe entradas desde
el redo log buffer a los redo log files.
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
En Unix svrmgrl
En NT svrmgr30
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.
• Creados automáticamente
• Privilegiados con el role DBA
3. SYS Y SYSTEM
• SYS
Password : change_on_install
Oracle – Administración de Bases de Datos Página 9
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Dueño del diccionario de datos de la base de datos
• SYSTEM
Password : manager
Dueño de tablas internas adicionales usadas por herramientas Oracle
CONNECT / AS SYSDBA
CONNECT / AS SYSOPER
6. El archivo de parámetros
BACKGROUND_DUMP_DEST
COMPATIBLE
CONTROL_FILES
DB_BLOCK_BUFFERS
DB_NAME
SHARED_POOL_SIZE
USER_DUMP_DEST
IFILE
LOG_BUFFER
MAX_DUMP_FILE_SIZE
PROCESSES
SQL_TRACE
Oracle – Administración de Bases de Datos Página 11
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
TIMED_STATISTICS
STARTUP
• NOMOUNT
• MOUNT
• OPEN
SHUTDOWN
• NORMAL
• TRANSACTIONAL
• IMMEDIATE
• ABORT
V$PARAMETER
V$SGA
V$OPTION
V$PROCESS
V$SESSION
V$VERSION
V$INSTANCE
V$CONTROLFILE
1. Prerrequisitos
8. Subir la instancia
1. Conectarse como SYSDBA
2. Subir la instancia en estado NOMOUNT
SVRMGR> startup nomount pfile=initu16.ora
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
DBA_TABLES
DBA_OBJECTS
DBA_LOBS
Oracle – Administración de Bases de Datos Página 18
Presentado por Carlos Mayorga al Ing. Ismael Castañeda 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
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
• 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
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:
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.
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.
4. Creación de tablespaces
Comando CREATE TABLESPACE
Ejemplo: CREATE TABLESPACE app_data
DATAFILE ‘/DISK4/app01.dbf’ SIZE 100M,
‘/DISK3/app02.dbf’ SIZE 100M
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;
17. Recomendaciones
• Usar varios tablespaces
• Especificar los parámetros de almacenamiento
• Asignar espacio en los tablespace a los usuarios
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.
6. Bloque Oracle
• Unidad mínima de I/O
• Consiste de uno o más bloques del Sistema Operativo
• Establecido por DB_BLOCK_SIZE
9. Espacio libre
SELECT tablespace_name, count (*), max (blocks), sum (blocks)
FROM dba_free_space
GROUP BY tablespace_name;
• INITIAL
• NEXT
• MAXEXTENTS
• MINEXTENTS
• PCTINCREASE
• OPTIMAL
• FREELISTS
PCTFREE
PCTUSED
INITRANS
MAXTRANS
Parte Descripción
Header Contiene la información general del bloque, como la dirección y el tipo de segmento.
Free Space Consiste en un conjunto de bytes en el bloque, disponibles para realizar inserciones o
actualizaciones de filas.
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.
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.
♦ 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
EXTENTS
♦ Cada segmento en una base de datos es creado con el menor número de extents para
almacenar los datos.
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.
En la gráfica anterior se presentan las tablas de las cuales se saca la información necesaria
para presentar en la aplicación.
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.
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.
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.
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).
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.
Sintaxis
AUDIT_TRAIL = valor
♦ 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
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.
AUDIT {statement|system_priv}
[,{statement|system_priv}]....
[BY user [, user]...]
[BY {SESSION|ACCESS} ]
[WHENEVER [NOT] SUCCESSFUL]
Auditoría de objetos
Donde:
ALTER X X X
AUDIT X X X X X
COMMENT X X X
DELETE X X X
EXECUTE 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
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
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.
Recomendación mover la pista de auditoría fuera del tablespace system, ya que la pista de
auditoría puede ser muy extensa.
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.
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 Página 56
Presentado por Carlos Mayorga al Ing. Ismael Castañeda F.
Proceso distribuido: Ocurre cuando una aplicación distribuye tareas en diferentes
computadores en una red.
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
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:
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.
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.
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
Es el caso contrario donde todos los usuarios pueden acceder a los datos y objetos en la
correspondiente base de datos remota.
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.
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.
Ejemplos