0% encontró este documento útil (0 votos)
24 vistas26 páginas

Session 01 IntroOracle

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas26 páginas

Session 01 IntroOracle

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 26

1

BASE DE DATOS IV

BASE DE DATOS ORACLE


Unidad I:
SQL
Tuning, Oracle Optimizer

Lima, jueves 8 de Agosto de 2024


SUMARIO

1. Introducción a la Base de Datos Oracle

2.- Instalación de la Base de Datos Oracle 19c

2.- Introducción al Tunning de Base de Datos

3.- PERFIL DE EGRESO

3
Introducción a la Base de Datos Oracle

Introducción a Oracle Database


Oracle Database es una de las soluciones de gestión de bases de datos más robustas y ampliamente utilizadas en el
mercado de tecnología de la información (TI). Desarrollada por Oracle Corporation, esta base de datos relacional ha
sido la columna vertebral de muchas aplicaciones empresariales críticas desde su lanzamiento inicial en 1979.
Características Clave
• Alta Disponibilidad y Recuperación ante Desastres:
• Oracle Real Application Clusters (RAC): Permite que varias computadoras trabajen como un solo sistema,
proporcionando alta disponibilidad y escalabilidad.
• Data Guard: Facilita la creación y gestión de una base de datos de respaldo para la recuperación ante
desastres.
• Rendimiento y Escalabilidad:
• Optimización de Consultas SQL: A través de su avanzado optimizador de consultas, Oracle asegura que las
operaciones SQL se ejecuten de manera eficiente.
• Particionamiento de Datos: Mejora el rendimiento y la capacidad de gestión al dividir grandes tablas y índices
en particiones más pequeñas y manejables.
• Seguridad Avanzada:
• Cifrado y Auditoría: Oracle ofrece cifrado de datos, controles de acceso granulares y capacidades de auditoría
robustas para cumplir con los requisitos de seguridad y cumplimiento.
Base de Datos Oracle

Soporte para Múltiples Modelos de Datos:


Relacional y NoSQL: Oracle soporta tanto modelos de datos relacionales como NoSQL, permitiendo
una mayor flexibilidad en el manejo de diferentes tipos de datos.
Importancia en el Mercado de TI
Adopción Empresarial Amplia:
Oracle Database es utilizada por empresas de todos los tamaños, desde startups hasta grandes
corporaciones y gobiernos. Su capacidad para manejar grandes volúmenes de datos y transacciones
la hace ideal para aplicaciones críticas de negocio.
Compatibilidad y Ecosistema:
Integración: Oracle Database se integra bien con otras soluciones de Oracle como Oracle Cloud,
Oracle ERP, y Oracle CRM, así como con herramientas de terceros.
Ecosistema de Desarrolladores y Soporte: Hay una vasta comunidad de desarrolladores y consultores
expertos en Oracle, lo que facilita la implementación y el mantenimiento.
Innovación Continua:
Oracle invierte continuamente en I+D para mejorar sus productos. Las versiones más recientes
incluyen características avanzadas como Machine Learning, Inteligencia Artificial, y capacidades de
análisis de datos en tiempo real.
.
Organización Lógica y Física de la Base de datos
Schema de la Base de datos
Componentes físicos y lógicos de la Base de Datos
Oracle
•Componentes Físicos:
• Archivos de Datos (Data Files).
• Archivos de Control (Control Files).
•Componentes Lógicos:
• Tablaspaces.
• Segmentos, Extents, y Bloques.

•Archivos de Redo Log (Redo Log Files).


Arquitectura de la Base de Datos Oracle
System Global Area

El SGA (System Global Area) es una región de memoria compartida que es crucial para el funcionamiento de la base de
datos. El SGA almacena datos y estructuras de control necesarios para la operación de la base de datos y es
compartido por todos los procesos de usuario y procesos en segundo plano.

Funciones Clave del SGA


Almacenamiento de Datos Recientemente Accedidos:
Buffer Cache: Guarda copias de bloques de datos que se han leído desde los archivos de datos en disco. Esto permite un acceso
rápido a datos frecuentemente solicitados sin tener que leerlos nuevamente desde el disco, mejorando significativamente el
rendimiento.
Almacenamiento de Sentencias SQL y Metadatos:
Shared Pool: Almacena las sentencias SQL parseadas y los datos del diccionario de la base de datos (como descripciones de
tablas, índices, etc.). Esto reduce la necesidad de volver a parsear las mismas sentencias SQL, optimizando el tiempo de ejecución
de las consultas repetitivas.
Registro de Cambios en los Datos:
Redo Log Buffer: Guarda temporalmente los cambios realizados en los datos antes de escribirlos en los archivos de redo log en
disco. Esto es esencial para la recuperación de la base de datos en caso de un fallo.
Gestión de Espacio de Trabajo Compartido:
Large Pool, Java Pool, Streams Pool: Estos son otros componentes opcionales del SGA que gestionan diferentes tipos de memoria
utilizados por procesos específicos, como grandes operaciones de datos, almacenamiento de código Java, o procesamiento de
datos en flujo.
Importancia de la SGA en la Performance de la Base
de Datos

Importancia de la Instancia en la Gestión Eficiente de Memoria:

• La SGA y la PGA permiten que Oracle gestione eficientemente los recursos de memoria, lo
que es crucial para el rendimiento de la base de datos.
• Optimización de Consultas: El Shared Pool en la SGA almacena las sentencias SQL parseadas,
lo que permite reutilizarlas y optimiza el rendimiento de las consultas.
• Seguridad y Recuperación de Datos: Los procesos de fondo como LGWR y DBWR aseguran
que los cambios en los datos se registren y escriban adecuadamente, proporcionando
mecanismos robustos para la recuperación de datos en caso de fallos.
• Consistencia de Datos: Los checkpoints gestionados por CKPT y las operaciones de limpieza
de SMON y PMON aseguran que la base de datos se mantenga en un estado consistente,
incluso después de fallos del sistema.
• Rendimiento General: Una gestión eficiente de los componentes de la instancia impacta
directamente en el rendimiento general de la base de datos, proporcionando tiempos de
respuesta rápidos y una experiencia de usuario mejorada.
Tuning o afinamiento de la Base de Datos Oracle

Definición: El tuning de la base de datos Oracle es el proceso de ajustar y optimizar los


parámetros de configuración, las consultas SQL, la estructura de los datos, y los recursos del
sistema para mejorar el rendimiento general de la base de datos.
• El objetivo principal es maximizar la eficiencia de la base de
datos, reducir los tiempos de respuesta, y asegurar un uso óptimo
de los recursos como CPU, memoria, y almacenamiento.

• Este proceso incluye varias actividades, como la optimización de


sentencias SQL, la configuración adecuada de la memoria (SGA y
PGA), la gestión de índices, la optimización de la arquitectura de
almacenamiento, y el ajuste de parámetros de la base de datos.

• El tuning es una actividad continua que busca identificar y eliminar


cuellos de botella, minimizar la contención y mejorar la
experiencia del usuario final al interactuar con la base de datos.
Importancia del Tuning de la Base de datos Oracle

1. Rendimiento Mejorado
Consultas Más Rápidas: Ajustar consultas SQL y la
configuración de la base de datos puede reducir
significativamente el tiempo de respuesta de las
consultas, lo que es vital para aplicaciones que
dependen de respuestas rápidas.
Optimización de Recursos: El tuning permite una
utilización más eficiente de los recursos del sistema,
como CPU, memoria y disco, evitando cuellos de
botella y sobrecargas.
2. Escalabilidad
Manejo de Crecimiento: A medida que la cantidad de
datos y el número de usuarios crecen, el tuning
asegura que la base de datos pueda manejar la carga
adicional sin una disminución significativa en el
rendimiento.
Preparación para el Futuro: Un sistema bien afinado
puede escalar mejor y más rápidamente para satisfacer
las demandas futuras.
Importancia del Tuning de la Base de datos Oracle

3. Eficiencia Operacional
Reducción de Costos: Al utilizar los recursos de manera más eficiente, se pueden reducir los costos
operativos, como la necesidad de hardware adicional o costos de almacenamiento.
Menos Mantenimiento: Un sistema optimizado requiere menos intervención manual y
mantenimiento, liberando tiempo y recursos para otras tareas críticas.
4. Fiabilidad y Disponibilidad
Menos Fallos: El tuning puede ayudar a identificar y resolver problemas potenciales antes de que
provoquen fallos en el sistema.
Recuperación Rápida: Mejora la capacidad del sistema para recuperarse de fallos y desastres,
asegurando una mayor disponibilidad de la base de datos.
5. Experiencia del Usuario
Satisfacción del Usuario: Un rendimiento mejorado de la base de datos resulta en tiempos de
respuesta más rápidos, lo que mejora la experiencia del usuario final.
Productividad: Los usuarios pueden realizar sus tareas más rápidamente, lo que aumenta la
productividad general de la organización.
Importancia del Tuning de la Base de datos Oracle

6. Optimización de Consultas
Uso Eficiente del Planificador: Ajustar las consultas SQL permite al optimizador de Oracle generar
planes de ejecución más eficientes, lo que puede mejorar significativamente el rendimiento.
Índices Apropiados: Identificar y crear los índices correctos puede reducir el tiempo de búsqueda y
mejorar la velocidad de acceso a los datos.
7. Manejo de la Contención y la Concurrencia
Reducción de Contención: Ajustar la base de datos puede minimizar la contención de recursos entre
usuarios concurrentes, mejorando el rendimiento en entornos multiusuario.
Gestión de Transacciones: El tuning puede optimizar la gestión de transacciones, reduciendo
bloqueos y mejorando la consistencia de los datos.
8. Ajuste de la Configuración del Sistema
Parámetros de Inicialización: Ajustar parámetros críticos de inicialización y configuración del sistema
puede tener un gran impacto en el rendimiento y la estabilidad de la base de datos.
Distribución de la Carga: Asegurar una correcta distribución de la carga de trabajo puede prevenir
sobrecargas en componentes específicos del sistema.
Escenario: afinamiento de la SGA

Escenario:

• Imagina que estás administrando una base de datos


Oracle en una empresa que ejecuta un sistema de
gestión de pedidos.
• La base de datos está experimentando un rendimiento
deficiente durante las horas pico, cuando el número de
transacciones y consultas es alto.
• Has notado que la carga en la base de datos ha
aumentado, y los tiempos de respuesta de las
consultas están por encima de los niveles aceptables
Escenario: afinamiento de la SGA

Diagnostico Inicial:

• Revisión de las métricas de rendimiento:


Utiliza vistas como V$SESSION, V$SQL, V$SQLAREA, y V$SYSTEM_EVENT
para identificar las sesiones que consumen más recursos. Revisa los
reportes de AWR (Automatic Workload Repository) y ASH (Active
Session History) para obtener una visión general del rendimiento
durante el período de alta carga.
• Identificación de cuellos de botella: Observa si hay un alto número de
lecturas y escrituras de disco, o si las consultas están causando bloqueos
y espera excesiva. Analiza los tiempos de espera de los eventos y los
posibles bloqueos en la base de datos.
Ejercicio:

• Consulta las actuales sesiones en tu base de datos:


SELECT SID, SERIAL#, USERNAME, STATUS, MACHINE, PROGRAM, MODULE, ACTION,
LOGON_TIME FROM V$SESSIONWHERE STATUS = 'ACTIVE';
Ejercicio: Consulta de sesiones que causan
problemas
Ejercicio: Ejemplo de sentencia PL/SQL mal diseñada

CREATE OR REPLACE PROCEDURE UpdateAircraftTimes (


p_tail_number IN VARCHAR2,
p_flight_time IN NUMBER
) IS
BEGIN
-- Suponiendo que la tabla de accesorios de aeronaves es `aircraft_accessories`
FOR i IN 1 .. 200 LOOP
-- Encuentra el accesorio correspondiente
DECLARE
v_accessory_id NUMBER; Búsqueda de Datos Ineficiente:El procedimiento realiza una
BEGIN búsqueda (SELECT ... INTO) dentro de un bucle, lo que
SELECT accessory_id significa que se realiza una consulta para cada uno de los
INTO v_accessory_id 200 accesorios. Esto puede causar una gran carga en la
FROM aircraft_accessories base de datos y una alta latencia.
WHERE tail_number = p_tail_number
AND accessory_number = i; -- Asumiendo que cada accesorio tiene un número único dentro del tail_number
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Accessory not found for tail_number ' || p_tail_number || ' and accessory_number '
|| i);
CONTINUE;
END;
Ejercicio: Ejemplo de sentencia PL/SQL mal diseñada
Optimización del codigo

CREATE OR REPLACE PROCEDURE UpdateAircraftTimes (


p_tail_number IN VARCHAR2,
p_flight_time IN NUMBER
En esta versión mejorada:
) IS • Se evita el bucle y la consulta repetitiva
BEGIN
dentro del bucle.
-- Actualiza los tiempos de vuelo de todos los accesorios en un solo bloque • Se realiza una actualización en bloque, lo
UPDATE aircraft_accessories
que reduce la carga en la base de datos y
SET flight_time = flight_time + p_flight_time
mejora la eficiencia.
WHERE tail_number = p_tail_number • Se realiza un COMMIT después de
AND accessory_number BETWEEN 1 AND 200;
completar todas las actualizaciones.
COMMIT;
END;
/
Ejercicio: Consulta de sesiones que causan
problemas
Para identificar conexiones o sesiones que están causando problemas o demorando mucho tiempo
en Oracle, puedes utilizar varias vistas del diccionario de datos que proporcionan información
sobre el tiempo de espera, las sesiones activas y las operaciones prolongadas. Aquí tienes algunas
consultas útiles para este propósito:

Consultar Sesiones Activas y su Tiempo de Espera

1. La vista V$SESSION proporciona información sobre las sesiones activas, y V$SESSION_WAIT muestra
el evento de espera actual de cada sesión.
Escenario: afinamiento de la SGA

Afinamiento de la SGA:
• El SGA incluye varias áreas que se pueden ajustar para mejorar el rendimiento, como el
Buffer Cache, Shared Pool, Large Pool, y Java Pool.
1. Buffer Cache:
• Si se observa que el Buffer Cache está causando un alto número de lecturas físicas
(esperas en disco) en lugar de lecturas lógicas (en memoria), puedes aumentar el
tamaño del DB_CACHE_SIZE para reducir la necesidad de lectura de disco.
• Usa V$DB_CACHE_ADVICE para estimar el impacto de aumentar el tamaño del Buffer
Cache.
2. Shared Pool:
• Si hay problemas con la carga de SQL o se observan errores de "ORA-04031" (memoria
del Shared Pool insuficiente), considera aumentar el SHARED_POOL_SIZE.
• Analiza los Library Cache y Data Dictionary Cache para determinar si necesitan más
memoria.
Escenario: afinamiento del PGA

• El PGA es la memoria utilizada para operaciones específicas de cada sesión, como


ordenamientos y uniones, que no están incluidas en el SGA.
1. Sort Area Size y Hash Area Size:
• Si observas que hay muchas operaciones de ordenamiento o hash que se están
realizando en disco en lugar de en memoria, puede ser necesario aumentar el
PGA_AGGREGATE_TARGET.Usa las vistas V$SORT_AREA_STATISTICS y V$PGASTAT para
identificar si hay un uso excesivo de espacio en disco para operaciones de clasificación
y hash.
2. Auto-Tuning del PGA:
• Activa PGA_AGGREGATE_TARGET para permitir que Oracle ajuste automáticamente el
tamaño del PGA según la carga de trabajo.
• Monitorea el PGA_AGGREGATE_LIMIT para evitar el uso excesivo de memoria que
podría llevar a un aumento en el intercambio de disco.
TAREAS APLICATIVAS

1. Consultas de los parámetros de Base de Datos

-- Capacidad total de la SGA -- Capacidad total de la PGA


SELECT name, value FROM v$pgastat
SELECT SUM(value) AS sga_size WHERE name = 'total PGA allocated’;
FROM v$sga;
-- Detalles adicionales de la PGASELECT name, valueFROM
-- Detalle de cada componente de la SGA v$pgastat;
SELECT name, bytes FROM v$sgainfo;
TAREAS APLICATIVAS

1. Consultas de los parámetros PGA

-- Capacidad total de la PGA


SELECT name, value FROM v$pgastat
WHERE name = 'total PGA allocated’;

-- Detalles adicionales de la PGA


SELECT name, value FROM v$pgastat;

También podría gustarte