P. 1
CursoDBA10g2_parte1

CursoDBA10g2_parte1

|Views: 19|Likes:
Published by LuisFelipeUNI

More info:

Published by: LuisFelipeUNI on Apr 15, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/15/2013

pdf

text

original

Sections

  • TEMARIO
  • OBJETIVOS
  • TEMA 1 INSTALACIÓN DE ORACLE10g
  • ESQUEMA DEL PROCESO DE INSTALACIÓN
  • TIPO DE BASE DE DATOS
  • ASISTENTES DE CONFIGURACIÓN
  • REQUERIMIENTOS HW Y SW (Linux)
  • PARÁMETROS DEL KERNEL Valores mínimos (Linux)
  • PARÁMETROS DEL KERNEL Ejemplo con Linux FC3
  • Paquetes necesarios FEDORA CORE 3 Linux
  • PREINSTALACIÓN (Linux)
  • INSTALACIÓN
  • POSTINSTALACIÓN
  • REVISION DE SEGURIDAD
  • COMPROBACIÓN FINAL
  • PRACTICAS TEMA 1
  • TEMA 2 DISEÑO Y CREACIÓN DE UNA BD
  • DISEÑO DE LA BASE DE DATOS Contiendas en la E/S
  • DISEÑO DE LA BASE DE DATOS Organización de los tablespaces
  • DIMENSIONAR MEMORIA EN 10G
  • VER MEMORIA EN LINUX
  • DIMENSIONAR LA SGA Shared-Pool y Buffer-Caché
  • DIMENSIONAR LA SGA Shared Pool y Log Buffer
  • DIMENSIONAR LA CPU
  • DIMENSIONAR FICHEROS Redo Log
  • DIMENSIONAR FICHEROS System, Sysaux, Temp y Rollback
  • FICHERO DE PARÁMETROS
  • EJEMPLO DE INIT.ORA
  • CREAR LA BASE DE DATOS
  • EJEMPLO CON “CREATE DATABASE”
  • ORACLE MANAGED FILES (OMF)
  • DBCA (DataBase Configuration Assistant)
  • PRACTICAS TEMA 2
  • TEMA 3 ESTRUCTURAS DE ALMACENAMIENTO
  • BLOQUES, EXTENSIONES Y SEGMENTOS
  • DIFERENTES TAMAÑOS DE BLOQUE EN LA MISMA BD
  • FORMATO DEL BLOQUE
  • GENERACION DE ESPACIO LIBRE EN UN BLOQUE
  • ESTRUCTURA DE LA FILA
  • EXTENSIONES  Y SU ASIGNACIÓN
  • SEGMENTOS
  • GESTION AUTOMATICA DEL ESPACIO DE LOS SEGMENTOS
  • COMPRESION DE LOS SEGMENTOS DE DATOS
  • METODOS DE ACCESO A DATOS INDICES B-TREE Y BITMAP
  • RECYCLE BIN Y DROP TABLE
  • ENVIAR CORREO DESDE ORACLE Paquete UTL_MAIL
  • ENCOLAR Y SUSPENDER LA BD Quiesce y Suspend
  • NUEVA INFRAESTRUCTURA
  • AUTOMATIC WORKLOAD REPOSITORY (AWR)
  • VISTAS AWR
  • AUTOMATIC DATABASE DIAGNOSTIC MONITOR (ADDM)
  • EJECUTAR ADDM CON DBMS_ADVISOR
  • OBTENER INFORME ADDM CON DBMS_ADVISOR
  • SQL TUNING ADVISOR
  • SEGMENT ADVISOR Segment SHRINK
  • SEGMENT ADVISOR Ejecución manual
  • SEGMENT ADVISOR Ver resultados
  • UNDO ADVISOR DBMS_UNDO_ADV
  • PRACTICAS TEMA 4
  • EVENTOS DE ESPERA
  • VISTAS DINAMICAS INFORMACION DE SESIONES
  • AJUSTE DE LA SHARED-POOL INTRODUCCION
  • AJUSTE DE LA SHARED-POOL SENTENCIAS SQL
  • AJUSTE DE LA SHARED-POOL GENERALIDADES
  • AJUSTE DE LA SHARED-POOL LIBRARY CACHE
  • AJUSTE DE LA SHARED-POOL ROW CACHE
  • AJUSTE DE LA SHARED-POOL RESTO DE VISTAS DINAMICAS
  • AJUSTE DE LA SHARED-POOL COMPARTIR CODIGO SQL
  • AJUSTE DE LA SHARED POOL LATCHES DE LA LIBRARY CACHE
  • AJUSTE DE LA SHARED POOL ESPERAS POR LATCHES
  • AJUSTE DE LA BUFFER CACHE GENERALIDADES
  • AJUSTE DE LA BUFFER CACHE HIT RATIO
  • AJUSTE DE LA BUFFER CACHE OBJETIVOS
  • AJUSTE DEL REDO LOG BUFFER GENERALIDADES
  • AJUSTE DEL REDO LOG BUFFER DETECTAR PROBLEMAS
  • AJUSTE DEL ROLLBACK GENERALIDADES
  • AJUSTE DEL ROLLBACK OPTIMIZACION
  • AJUSTE DE SEGMENTOS DE SORT GENERALIDADES
  • AJUSTE DE SEGMENTOS DE SORT OPTIMIZACION
  • AJUSTE DE LOS CHECKPOINTS
  • AJUSTE DE LAS CONSULTAS SQL
  • AJUSTE DE LA CPU
  • UTILIDAD “STATSPACK”
  • INSTALAR “STATSPACK”
  • RECOGIENDO DATOS CON “STATSPACK”
  • OBTENIENDO INFORMES CON “STATSPACK”
  • RESUMEN DE SCRIPTS “STATSPACK”
  • VISTAS DEL DD
  • APENDICE A Recursos Oracle en Internet.
  • APENDICE D Conexión a la BD y consulta
  • APENDICE E Actualización de datos
  • APENDICE F Novedades Oracle 9i
  • APENDICE G Novedades Oracle 10g
  • APENDICE H SOPORTE DE GLOBALIZACIÓN
  • APENDICE H NLS_SESSION_PARAMETERS
  • APENDICE H NLS_TERRITORY Y NLS_LANGUAGE
  • APENDICE H NLS_DATE_LANGUAGE

Administración de Oracle 10g (Parte 2) 

Este documento electrónico puede ser descargado libre y  gratuitamente desde Internet para su ejecución e  impresión, sólo para fines educativos y/o personales,  respetando su integridad y manteniendo los créditos de  los autores en el pie de página. Queda por tanto prohibida su venta. Administració n de Oracle 10g (Parte 2)

Francisco Fernández Martínez (pacof@um.es) Juan Luis Serradilla Amarilla (juanlu@um.es)

Universidad de Murcia

© Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004  – 2008

TEMARIO
• • • • • • • • • • Instalación de Oracle10g. Diseño y creación de una base de datos. Estructuras de almacenamiento (bloque, fila, segmento). Nuevas funcionalidades de monitorización y ajuste de Oracle 10g. Monitorización y ajuste tradicional de Oracle en versiones anteriores. Oracle Net. MTS. Configuración del archivado. Backup.  Recovery.
2

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

OBJETIVOS
• • • • • Saber instalar Oracle10g (servidor y BD) sobre Linux. Diseñar (memoria, CPU y disco) y crear una base de datos. Conocer el formato del bloque oracle, estructura de la fila, tipos de segmentos  y tipos de índices (B­tree vs IOT). Conocer  la  nueva  infraestructura,  así  como  las  nuevas  herramientas  de  monitorización y ajuste de Oracle 10g. Conocer  la  infraestructura  tradicional  de  Oracle  para  el  ajuste  y  la  monitorización: vistas dinámicas de rendimiento, ajuste de sharedpool, buffer  cache, redo log, rollback, temporal (sort), checkpoints, sql, cpu. Configurar el software de red (Oracle Net) en el servidor y en el cliente. Saber activar y configurar MTS. Configurar el archivado de una BD Oracle10g. Conocer las cuestiones avanzadas del backup de una BD.  Conocer las cuestiones avanzadas del recovery de una BD.
3

• • • • •

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

TEMA 1 INSTALACIÓN DE ORACLE10g Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 4 .

TEMA 1. Paquetes necesarios. Ejemplo con FC3. Tipos de Bases de Datos. Requerimientos HW y SW. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 5 . Parámetros del Kernel LINUX. INSTALACIÓN DE ORACLE10g • • • • • • • • • • Esquema del proceso de instalación. Asistentes de Configuración. Ejemplo con FC3. Preinstalación. Instalación. Revisión de seguridad y comprobación final. Postinstalación.

com/pls/db102/homepage • • • • • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 6 . Tipo de instalación – Enterprise Edition – Standard Edition – Personalizada Directorio raíz (ORACLE_HOME) Lista de productos a instalar Comprobación automática de los requisitos del SO  Grupos del SO con privilegios (dba y/o oper) Creación de la BD: crear BD (ver DBCA) o Configurar ASM o Instalar sólo SW Asistentes de configuración (red con netca. BD con dbca. Método de instalación por defecto.oracle. Para instalación rápida: SW y permite crear BD de propósito general  (en base a una “precreada”).ESQUEMA DEL PROCESO DE  INSTALACIÓN • • • Descargar SW de Oracle: http://www. etc) Scripts a ejecutar como root INSTALACIÓN DE ORACLE10g http://www.oracle. – Avanzado: para una instalacion personalizada del sw y/o de la BD.com/technology/software/products/database/oracle10g/index.html Manual de instalación (primero ver “Release Notes”): Método de instalación – Básico.

Sólo Software: no crea BD ni configura sqlnet. Personalizada. Almacén de Datos (Data Warehouse):  consultas complejas sobre muchos  datos (OnLine Analytical Processing).  La BD creada incluye: – Parámetros de inicialización usando spfile y gestión automática de UNDO. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 7 .  consistentes  en  consultas sencillas sobre pocos datos (también actualizaciones).TIPO DE BASE DE DATOS • Uso General:  transacciones cortas (OLTP) y también largas (procesos batch). – Oracle Options e interMedia – Advanced Replication – Servidores Dedicados (no usa MTS) – NOARCHIVELOG • • • • Procesamiento  de  Transacciones  (OLTP:  Online  Transaction  Processing):  muchas  transacciones  cortas  concurrentes.

– Cliente: permite configurar tnsnames.  arrancando  OID Server (necesita BD).4/10.4/9.ora.0.4/9.2.ASISTENTES DE CONFIGURACIÓN • • Database Configuration Assistant (dbca). el fichero ldap. Oracle  Net  Configuration  Assistant  (netca):  configura  la  red  C/S  de  Oracle  en  $ORACLE_HOME/network/admin. Oracle  Internet  Directory  Configuration  Assistant:  configura  OID.  Configura.ora. Database  Upgrade  Assistant  (dbua):  para  actualizar  una  BD  >=  8.  sqlnet. además de los anteriores. • • • – Permite copiar una BD preconfigurada o crear una personalizada. sqlnet.7.ora. después de instalar el sw de Oracle10g.1. – Arranca automáticamente una vez que se ha instalado el sw Oracle. crear listeners  para  conectar  a  la  BD  y  seleccionar  el  método  de  resolución  de  nombres.1.2.0.1. INSTALACIÓN DE ORACLE10g Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 8 . Oracle  Enterprise  Manager  Configuration  Assistant:  configura  OMS  y  crea  (o  actualiza) su repositorio (necesita BD).ora. – Opciones  Enterprise  y  Standard:  configura  listener.ora y ldap.ora.ora  y  tnsnames. – Personalizada: permite configurar un servicio de directorio (LDAP).0.

 ej:  RAM=4Gb y Swap=1Gb.html • Ejemplo (Linux x86 + Database Server + Enterprise + 10gR2) – – – – Suse 9 y 10 Red Hat Enterprise AS/ES 3 y 4 (CentOS es clónico) Enterprise Linux 4 Asianux 2 – Entorno gráfico (Xwin): “xclock” – Acceso a los ejecutables: make. ld.com/technology/support/metalink/content.conf) Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 9 .REQUERIMIENTOS HW Y SW  (Linux) • HW: – RAM 1G (256M para el cliente): “grep Mem /proc/meminfo” – HD entre 1.5Gb para el sw. – Parámetros del kernel (/etc/sysctl. ar. – Certificación:  http://www. si tenemos mucha RAM.2Gb para la bd y al menos 400Mb de  /tmp: “df” – Swap 1.5 y 3. e igual a la RAM (si >2G): ”/sbin/swapon ­s”. podemos configurar poco swap.5 RAM (si <=2G).oracle. 1. • SW: • En Linux. nm.

SEMMNS = 256 (# máximo de semáforos. – Si queremos tener una SGA de más de 2Gb tendremos q subir este valor. Se recomienda la mitad de la RAM. SEMMSL = 100 (valor mínimo recomendado. SEMOPM = 100 (# máximo de operaciones por “semop call”). • • • • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 10 . – SEMMNS = sum(processes) + max(processes) + 10*count(BBDD) processes es el parámetro del init de cada BD. SHMSEG = 4096 (# máximo de segmentos de memoria por proceso). sólo para la instalación inicial). sólo para la instalación inicial). SHMMIN = 1 (tamaño mínimo de un segmento de memoria compartida). – 2 GB para kernel SMP.PARÁMETROS DEL KERNEL Valores mínimos (Linux) • • SEMMNI = 100 (# máximo de conjuntos de semáforos). SHMVMX = 32767 (valor máximo de un semáforo). SHMMAX = 2147483648 (tamaño máximo del segmento de memoria compartida y por tanto  de la SGA). SHMMNI = 4096 (# máximo de segmentos de memoria compartida).

rmem_max=262144 net.file­max = 65536 net.core.ipv4.oracle­base.conf: kernel.shmmax = 2147483648 kernel.wmem_default=262144 net.ip_local_port_range = 1024 65000 net.PARÁMETROS DEL KERNEL Ejemplo con Linux FC3 (http://www. semmns.wmem_max=262144 Actualizar los parámetros en memoria con  # /sbin/sysctl ­p Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 11 .core.rmem_default=262144 net.php) Añadir las siguientes líneas al fichero /etc/sysctl.core. semopm.sem = 250 32000 100 128 fs.shmall = 2097152 kernel. semmni kernel.com/articles/10g/OracleDB10gR2InstallationOnFedora3.shmmni = 4096 # semaphores: semmsl.core.

Paquetes necesarios FEDORA CORE 3 Linux
# De Fedora Core 3 Disk 1 cd /media/cdrom/Fedora/RPMS rpm ­Uvh setarch­1* rpm ­Uvh tcl­8* rpm ­Uvh compat­libstdc++­8* # De Fedora Core 3 Disk 2 cd /media/cdrom/Fedora/RPMS rpm ­Uvh xorg­x11­deprecated­libs­6* rpm ­Uvh openmotif­2* rpm ­Uvh compat­db­4* # De Fedora Core 3 Disk 3 cd /media/cdrom/Fedora/RPMS rpm ­Uvh compat­libstdc++­devel­8* rpm ­Uvh compat­gcc­8* rpm ­Uvh compat­gcc­c++­8* rpm ­Uvh libaio­0*
Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g

12

PREINSTALACIÓN (Linux)
• • • • • • Crear puntos de montaje: uno para el sw y hasta seis para las bases de datos: Crear grupo dba: “groupadd dba”. Crear grupo oinstall: “groupadd oinstall”. Crear usuario  oracle con grupo primario dba y secundario oinstall: “useradd ­g  dba ­G oinstall oracle”. Crear directorio /u01/app/oracle (ORACLE_BASE) y /u02/oradata, /u03/oradata,  etc. Variables de entorno del usuario oracle justo antes de instalar:
– DISPLAY=workstation_name:0.0 (servidor Xwin) – ORACLE_BASE=/u01/app/oracle (el resto es opcional) – PATH debe incluir $ORACLE_HOME/bin, /usr/bin, /bin,  /usr/bin/X11/ y /usr/local/bin – ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1 – ORACLE_SID – /u01 (sw) – /u02 (datos), /u03 (índices), /u04 (redo), /u05 (system), /u06 (temp) y /u07 (rollback)

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

INSTALACIÓN DE ORACLE10g

13

INSTALACIÓN
• • • Artículo de OTN sobre instalación de Oracle 10g sobre Linux:
http://www.oracle.com/technology/pub/articles/smiley_10gdb_install.html

Montar CD desde el root: – # mount /mnt/cdrom Como usuario oracle, lanzar script de instalación desde fuera del punto  de montaje del CD (por ejemplo, desde el HOME del usuario oracle). – Comprobar variables DISPLAY y ORACLE_BASE. – $ /mnt/cdrom/runInstaller Nota. Se podría ejecutar en modo “no interactivo” con: $ /mnt/cdrom/runInstaller ­responsefile mirespfile ­silent – Cambiar  CD:  “eject”  o  “umount  /mnt/cdrom”  y  luego  “mount  /mnt/cdrom”.

Nota: el punto de montaje del CDROM no tiene por qué ser “/mnt/cdrom”, puede  ser otro (“/media/cdrom”, etc).
Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g

14

 el siguiente comando de  $ORACLE_HOME/rdbms/lib: $ make ­f ins_rdbms. Se puede comprobar con: # ps ­fe|grep dbw|grep ­i curso50 oracle   22540     1  0 Jan08 ?        00:00:08 ora_dbw0_CURSO50 # lsof ­p 22540|grep libaio oracle  22540 oracle  mem    REG  253.oracle.html http://www.2.com/technology/deploy/security/pdf/twp_security_checklist_db_database. asignar el parámetro del init: filesystemio_options = setall – Ejecutar.mk asynch_on Comprobar seguridad de la BD:  Comprobar parches de seguridad: – http://www.POSTINSTALACIÓN • Incluir variables en .oracle.com/technology/deploy/security/index.1  • • • – Para activarla a nivel de una BD.1.0.pdf Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 15 . si es necesario.1 – export LD_LIBRARY_PATH=$ORACLE_HOME/lib – export PATH=$ORACLE_HOME/bin:$PATH – export ORACLE_SID=mibd Activar E/S asíncrona: – El sw de Oracle 10g R2 ya la lleva activada.bash_profile del usuario oracle: – export ORACLE_BASE=/u01/app/oracle – export ORACLE_HOME=$ORACLE_BASE/product/10.so.0.0      2628  1966157 /usr/lib/libaio.

Restringir el acceso al servidor Oracle a través de y desde la red. mdsys. Restringir los usuarios unix con acceso al servidor Oracle. ordsys. Bloquear cuentas de usuarios creados por defecto que no vayamos a utilizar. para conectar a la  BD dar CREATE SESSION y no CONNECT.html Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 16 .  por  ejemplo. ctxsys. SYSTEM.REVISION DE SEGURIDAD • • • • • • • • Instalar sólo aquellas opciones que sean necesarias (Java.  Así. impidiendo  acceso  al  DD  a  través  de  privilegios  ANY. Por ejemplo.com/deploy/security/alerts. Proteger el DD con O7_DICTIONARY_ACCESSIBILITY = FALSE. SYSTEM. por ejemplo:  outln. etc). SCOTT y DBSNMP. Aplicar todos los parches de seguridad que vayan saliendo. Cambiar claves de usuarios creados por defecto: SYS. Intermedia. etc. wksys.  usuarios  con  DROP ANY no podrán borrar el DD Practicar el principio de “los privilegios justos”. etc.oracle. – http://otn.  DBCA bloquea todas menos SYS.

..0 ­ Production on 02­JAN­2007 13:00:42 Copyright (c) 1991.0.0 ­ Production on Tue Jan 2 12:59:46 2007 Copyright (c) 1982.   Instance "MNCS".2. Oracle. – Comprobar el Listener Sql*Net $ lsnrctl status LSNRCTL for Linux: Version 10. . Comprobar que el SW y la BD (si hemos instalado una) funcionan.COMPROBACIÓN FINAL • • En el directorio $ORACLE_BASE/oraInventory/logs podemos revisar lo  ocurrido durante la instalación.  All Rights Reserved.. – Conectar a la BD usando Sql*Plus $ sqlplus /nolog SQL*Plus: Release 10. 2005.0. – Oracle Enterprise Manger: • Arrancar el servidor web de OEM: $ emctl start dbconsole .. Oracle. status READY.2. has 1 handler(s) for this service.. SQL> connect / as sysdba Connected.2. 2005. The command completed successfully • Acceder a “http://host:1158/em” Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 17 ..  All rights reserved.2.

1. 1. 1.5.2.PRACTICAS TEMA 1 • • • • • • • • 1. Revisar alertas de seguridad en OTN. Buscar el fichero de log de la instalación y echarle un vistazo. Comprobar tareas de post instalación relacionadas con la seguridad  de la BD.4.3. 1.8. Comprobar cuánto ocupa el sw de Oracle10g.6.  Comprobar  los  requerimientos  HW  y  SW  para  la  instalación  de  Oracle10g sobre Linux. Consulta el “Simulador de Instalación de Oracle10g”. Comprobar las tareas de preinstalación.1. 1. Revisar el manual de instalación de Oracle10g para Linux. 1. 1. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 INSTALACIÓN DE ORACLE10g 18 .7.

TEMA 2 DISEÑO Y CREACIÓN DE UNA BASE DE  DATOS Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 19 .

• Creación de la BD con CREATE DATABASE y OMF. temp. – Utilidades Oracle (tablespace SYSAUX en 10g. – Tipos de segmentos (tablas. – Datos estáticos y dinámicos. • Dimensionar ficheros de la BD (Redo Log. y antes TOOLS). – Procesos (DBWR. System.  Rollback). ARCH).  • DataBase Configuration Assistant (DBCA). Temp. • Dimensionar memoria: SGA (Shared Pool. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 20 . rollback). índices. Sysaux.TEMA 2. Redo Log). • Dimensionar CPU. Buffer Cache. LGWR. DISEÑO Y CREACIÓN DE UNA BD • Contiendas de E/S – Diccionario de Datos (tablespace SYSTEM).

 índices. gestión de investigación. tipos de vía. provincias. temp. Discos diferentes para  redolog online y archivado. etc). LGWR y ARCH. rollback. letras del nif. Si no se detectan a  priori.DISEÑO DE LA BASE DE DATOS Contiendas en la E/S • Es muy importante tener en cuenta las posibles contiendas en la E/S: – Contienda  entre  el  DD  y  los  datos  en  sí. Puede ser necesario un disco para el SYSAUX. etc).  las  que  no  tengan  insert/update/delete durante un día representativo. – Entre  las  utilidades  del  tablespace  SYSAUX  (>=10g)  y  las  aplicaciones. sexos. o varios días).  Se accederán con mucha frecuencia y sólo en lectura. – Contienda entre procesos: DBWR. índices.  se  pueden  identificar  usando  la  auditoría  (p. DISEÑO Y CREACIÓN DE UNA BD • Administració n de Oracle 10g (Parte 2) 21 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . – Contienda entre tipos de segmentos: datos. rollback y temp. – Contienda entre datos estáticos y dinámicos. y el resto de la BD. Identificar los datos estáticos  (tablas pequeñas: países.  gestión de personal.e. Un tablespace para cada  área funcional o cada aplicación (gestión económica.  o  con el DD. Separar  segmentos de datos.  En  el  tablespace  SYSTEM  sólo  debe residir el DD y el segmento de rollback SYSTEM. gestión académica.

  Podemos  tener  un  tablespace  de  UNDO  aparte. crear tablespace especial de rollback para las transacciones grandes.".  Además.  Si  las  aplicaciones  usan  tablas  temporales  globales. Separar  los  índices  de  los  datos:  se  puede  mover  un  índice  con  "alter  index  rebuild tablespace tsp_indices. se  puede definir un grupo de tablespaces para el tablespace temporal por defecto  de la BD. En las tablas particionadas. para las transacciones largas de procesos nocturnos.  también deben residir en un tablespace temporal independiente. Si se opta por la  manual.  como  pueden  ser  las  usadas  para  cargar información desde ficheros (no hacerlo directamente en las tablas a las  que va dirigida finalmente la información). Separar  el  UNDO  (segmentos  de  rollback  si  <9i). al  menos los datos vigentes de los históricos. separar las particiones en diferentes tablespaces.  crear  tablespaces  temporales  adicionales  para  cada  usuario  que  genere  muchos  segmentos  temporales.  Desde  9i. Separar las vistas materializadas en un tablespace independiente. Separar  las  tablas  temporales  de  trabajo.DISEÑO DE LA BASE DE DATOS Organización de los tablespaces • • • Utilizar tablespaces locales (>=8i) con gestión automática de segmentos (>=9i). DISEÑO Y CREACIÓN DE UNA BD • • • • Administració n de Oracle 10g (Parte 2) 22 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .  más  grande. Separar  los  segmentos  temporales  en  un  tablespace  temporal. Desde 10g.  mejor  la  gestión  automática  de  UNDO.

2 = 149M – SGA_MAX_SIZE = (1024 * 0.es/oradoc102/server.8 – núcleo) * 0. fijando el máximo con SGA_MAX_SIZE. La  SGA  la  dimensionamos  con  SGA_TARGET  (nuevo  en  10g.um.8 Ejemplo: supongamos RAM=1024M y núcleo=70M – PGA_AGGREGATE_TARGET = (1024 * 0.1/bin/oracle • • Administració n de Oracle 10g (Parte 2) 23 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .2 – 80% para SGA_MAX_SIZE: (RAM * 0.htm#sthref383 Desde 9i podemos usar un pool compartido para las PGAs. buscar 1ª fila con ESTD_OVERALLOC_COUNT=0.8): – Mínimo de 40M para el núcleo: – 20% para PGA_AGGREGATE_TARGET: (RAM * 0.102/b14231/create.8 – núcleo) * 0. sino todos los procesos de  la  misma  (PGAs). Así como el núcleo de Oracle.8 – 70) * 0.8 – 70) * 0.atica. Memoria  Oracle  10g  =  Núcleo  Oracle  +  PGA_AGGREGATE_TARGET  +  SGA_MAX_SIZE. Memoria máxima para Oracle: 80% de la RAM (RAM * 0. DISEÑO Y CREACIÓN DE UNA BD $ size $ORACLE_HOME/bin/oracle     text   data    bss      dec     hex filename 74097968 288308 121304 74507580 470e53c /u01/app/oracle/product/10.0.DIMENSIONAR MEMORIA EN 10G • • • • • La RAM debe albergar no sólo la SGA de nuestra BD. dimensionándolo con  PGA_AGGREGATE_TARGET (mínimo 10M). http://cursos.8 = 599M En  v$pga_target_advice.  activa  ASMM  si  statistics_level vale ALL o TYPICAL).  más  aquellos  procesos  necesarios  en  nuestro  sistema  (que  no  son de la BD).2.

  la  podemos  ver  con  el  comando unix “size”..1/bin/oracle • “ps v pid_proceso” o “ps ­u usuario v” • RSS ­> Tamaño de la parte residente del proceso en memoria real (en Kb).VER MEMORIA EN LINUX • La memoria libre (y la usada) la podemos ver con “free ­m”.3 oracleCURSO70 (DESCRIPTION=(LOCAL=YES) 14594 ?   Ss   0:00     0 72361 117034 25832  0. • La  memoria  necesaria  para  el  ejecutable  de  oracle.3 oracleCURSO70 (DESCRIPTION=(LOCAL=YES) DISEÑO Y CREACIÓN DE UNA BD Administració n de Oracle 10g (Parte 2) 24 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .6 oracleCURSO70 (DESCRIPTION=(LOCAL=YES) 14626 ?   Ss   0:00     1 72361 116510 15168  0. • %MEM ­> Porcentaje de la memoria real (RAM) que ocupa la parte residente. $ free ­m              total       used       free     shared    buffers     cached Mem:          4041       3992         49          0        152       2487 ­/+ buffers/cache:       1353 1353       2688 Swap:         2047        373       1673 $ ipcs ­m ­­­­ Segmentos memoria compartida ­­­­ key        shmid      propietario perms      bytes      nattch     estado 0x6abd8a34 5537793    oracle    660        102760448  13 . La memoria asociada a cada servidor dedicado (uno por sesión): – $ size $ORACLE_HOME/bin/oracle     text   data    bss      dec     hex filename 74097968 288308 121304 74507580 470e53c /u01/app/oracle/product/10.. • Los segmentos de memoria compartida (SGAs) se ven con “ipcs ­m”.0. $ ps ­u oracle v|grep ­i local   PID TTY STAT TIME MAJFL   TRS    DRS   RSS %MEM COMMAND 14560 ?   Ss   0:00     0 72361 116542 13492  0.2.

 shared_pool_size.45 Se  puede  ver  el  overhead  necesario  en  shared  pool  para  el  arranque  en  V$SGAINFO (>=10g). 8.  Si  dejamos  los  demás a cero (db_cache_size.55 • Para servidores con RAM > 1Gb: RAM * (0.75) – Memoria recomendada por instancia: (RAM * 0. – Shared pool = mem por instancia * 0. En 10g el overhead resta de shared_pool_size (en 9i no).  Puede  haber  hasta cuatro  DB_nk_CACHE_SIZE.DIMENSIONAR LA SGA Shared­Pool y Buffer­Caché • DB_CACHE_SIZE + [DB_KEEP_CACHE_SIZE + DB_RECYCLE_CACHE_SIZE + DB_nk_CACHE_SIZE]  +  SHARED_POOL_SIZE  +  [LARGE_POOL_SIZE  +  JAVA_POOL_SIZE  +  STREAMS_POOL_SIZE]  +  LOG_BUFFERS + 1MB  Nota:  streams_pool_size sólo  >=10g.  4. Si queremos fijar manualmente shared_pool_size y/o db_cache_size (ó <=9i): – Memoria recomendada para todas las SGAs de un servidor: • Para servidores con RAM <= 1Gb: RAM * 0.60 a 0. ) El tamaño aproximado de la SGA (SGA_TARGET si >=10g) es el siguiente:   • • • • En  10g  se  simplifica  mucho:  SGA_MAX_SIZE  y  SGA_TARGET.45 – Buffer cache = mem por instancia *0.  16.  con  n =  2. Oracle reparte sga_target automáticamente entre ellos. java_pool_size  y streams_pool_size). Recomendaciones de espacio para shared pool y buffer caché (>=9i): – V$SHARED_POOL_ADVICE – V$DB_CACHE_ADVICE (parámetro db_cache_advice=ON) Nota: STATISTICS_LEVEL debe valer ALL o TYPICAL DISEÑO Y CREACIÓN DE UNA BD Administració n de Oracle 10g (Parte 2) 25 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . 32k (uno de los tamaños de bloque es el que usa DB_CACHE_SIZE.55) / nºinstancias. large_pool_size.

 initial_size/1024/1024 "INITIAL". oper_type. user_specified_size from  v$sga_dynamic_components. min_size.5        525                        96           2        526 – select component.  shared_pool_size_factor "Size Factor".DIMENSIONAR LA SGA Shared Pool y Log Buffer • V$SHARED_POOL_ADVICE. Size of Shared Pool in MB Size Factor Time Saved in sec ­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­                        24          .  Asignar  más  de  3Mb  es  inútil ya que el LGWR escribe cuando el buffer se llena 1/3 o 1Mb.  FINAL_SIZE/1024/1024 "FINAL". incluso en un sistema  con  mucha  carga. Ver gestión dinámica.  1MB  posiblemente  sea  suficiente.28).30)             CURRENT_SIZE   MIN_SIZE USER_SPECIFIED_SIZE ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­ shared pool                        50331648   25165824                   0 large pool                          4194304          0                   0 – select rpad(component.5        525                        48           1        525                        72         1. estd_lc_time_saved "Time Saved in   sec" FROM v$shared_pool_advice. Ver si interesa redimensionar SharedPool. status from v$sga_resize_ops. DISEÑO Y CREACIÓN DE UNA BD Administració n de Oracle 10g (Parte 2) 26 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . SELECT  shared_pool_size_for_estimate  "Size  of  Shared  Pool  in  MB". current_size. • • El parámetro del init LOCK_SGA=true evita que se haga swapping de la SGA. RPAD(COMPONENT.28)           OPER_TYPE        INITIAL      FINAL STATUS ­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­ DEFAULT buffer cache         STATIC                44         40 COMPLETE shared pool                  GROW                  40         44 COMPLETE • V$SGA_DYNAMIC_COMPONENTS y V$SGA_RESIZE_OPS. RPAD(COMPONENT. LOG_BUFFER no necesita más de pocos cientos de Kb.

Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 27 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Por defecto 1.  Probar  con  MTS  si  se  degrada  el  uso  de  CPU  por  muchas  sesiones concurrentes (MTS es mejor si hay muchas conexiones a la BD).16      0. – Porcentaje máximo de procesamiento OS/usuario = 40/60%.54 18:40:00          all      0. podemos detectar que llega a su límite de uso si: – Porcentaje máximo de ocupación de CPU = 90%.06      0. – SESSIONS. Para una instancia con “servidores dedicados” (sin MTS). Número máximo de procesos en la instancia.17      0. tendremos un proceso  servidor por cada sesión. la carga debe estar balanceada.1*PROCESSES.54 Media:            all      0. Parámetros que limitan el número de procesos y de sesiones: – PROCESSES. lo ideal sería disponer al menos de 2 CPUs.00      0.33     99. sin embargo si usamos MTS habrá que  subirlo (con MTS se puede usar shared_server_sessions para limitar esas sesiones). Para una BD mediana con  una carga razonable. Por ejemplo.20     99. para  100  usuarios  simultáneos  tendremos  un  mínimo  de  100  procesos  nuevos  en  nuestro  sistema.12     99.05      0.54 • • • Si hay varias CPUs.00      0.00      0.20      0. $ sar  18:20:00          CPU     %user     %nice   %system   %iowait     %idle 18:30:00          all      0.08      0. Nota: podemos usar los comandos Linux “top” y “sar”.DIMENSIONAR LA CPU • Si partimos de una sola CPU. además de los procesos background.

 El valor máximo son 3600 segundos (1h). Empezaremos con ficheros de 50­100M.  – El tamaño óptimo se puede sacar de la columna OPTIMAL_LOGFILE_SIZE  de la vista V$INSTANCE_RECOVERY. pondremos 0 si queremos que coincidan  con el “log switch”. intentando que los “log switch” sucedan  cada 20­30 minutos. DISEÑO Y CREACIÓN DE UNA BD Administració n de Oracle 10g (Parte 2) 28 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Nota: log_checkpoint_to_alert=true muestra checkpoints en fichero alert.DIMENSIONAR FICHEROS Redo Log • Redo = 50 a 100M (cada fichero).  Si queremos que los checkpoints coincidan con los “log switch” (y como máximo  cada 30 minutos).  si  disponemos  de  discos.  los  multiplexaremos  en  dos  discos (dos miembros por grupo). asignaremos los parámetros: – log_checkpoint_interval=0 – log_checkpoint_timeout=1800 (30 minutos. y permite indicar el nº de segundos  que esperamos que (como mucho) tarde la “recuperación de la instancia” (después de una  “caída”). – FAST_START_MTTR_TARGET=0 (desactiva “fast recovery instance”). independientemente del tiempo transcurrido). • • • • FAST_START_MTTR_TARGET es nuevo desde 9i.log. Al  menos  tres  grupos  y.

 20 sesiones. Statistics collection. UNION. BD pequeña (2 cpu. Temp y Rollback • • SYSTEM >= 260M. Temporary LOBs. 256K). Tablespaces locales con “uniform size 1M” (si muchas sesiones  simultáneas. 100 sesiones. 500 objetos (tablas/índices). necesitaré 100M. por todas sus columnas.  CREATE  INDEX. Estimar tamaño con $ORACLE_HOME/rdbms/admin/utlsyxsz. temporary tables. y 20 extensiones iniciales cada uno.sql.DIMENSIONAR FICHEROS System. Usar modo “auto” (no permite “set transaction”). TIME                UNDOTSN   UNDOBLKS   TXNCOUNT MAXQUERYLEN ­­­­­­­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­­ 18/01/2007 10:40        368         16     338516           6 DISEÑO Y CREACIÓN DE UNA BD • • Administració n de Oracle 10g (Parte 2) 29 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . crear un RS por cada 4 sesiones. Activaremos el “autoextend” con next=10M. Sysaux.  CREATE/ENABLE  PRIMARY/UNIQUE  KEY  CONSTRAINT. UNDOBLKS. 5000 objetos). Con pga_aggregate_target se ignora *_area_size.'DD/MM/YYYY HH24:MI') "TIME".  Si usamos modo  “manual”. – 2G para BD mediana (8 cpu. RBS >= 100M. Estadísticas de UNDO cada 10 minutos. SELECT TO_CHAR(BEGIN_TIME. – Los segmentos temporales ocupan espacio igual que una tabla: para ordenar  una tabla de 100M. DISTINCT. incluyendo bloques  de undo y la consulta más larga (en segundos). 50000 objetos).  “Optimal” debe ser suficiente para 90% de transacciones. SYSAUX. INTERSECT or MINUS. o: – 500M.MAXQUERYLEN FROM V$UNDOSTAT. UNDOTSN. 10 sesiones activas. non­indexed joins.  TXNCOUNT. – V$UNDOSTAT. – 5G para BD grande (32 cpu.  – Operaciones  que  necesitan  segmentos  temporales:  SELECT  ORDER  BY.  GROUP BY. TEMP >= 100M.

 Si  queremos modificar el parámetro sólo en el spfile.  no  editable  pero  visualizable. Nota1.FICHERO DE PARÁMETROS • • Para  arrancar  la  instancia. indicaremos SPFILE. toma los valores por defecto. Nota2. La BD no podrá abrir el nuevo spfile hasta el siguiente arranque.  cuyo  nombre  sigue  el  patrón  init$ORACLE_SID.  editable.ora. Nota2. invirtiendo la sintaxis. – Spfile:  es  un  fichero  binario. • Los parámetros del spfile se modifican con: ALTER  SYSTEM  SET  parámetro  =  valor  [SCOPE  =  MEMORY  |  SPFILE | BOTH] Nota. a partir de un init. Se puede crear un init a partir de un spfile.ora.  el  servidor  Oracle  tiene  que  leer  el  fichero  de  parámetros  de  inicialización  (spfile  o  init). Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 30 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . El fichero de parámetros de inicialización puede ser de dos tipos: – Init:  se  trata  de  un  fichero  de  texto. • Se crea.  cuyo  nombre  sigue el patrón spfile$ORACLE_SID.  cuya  ubicación  predeterminada  es  $ORACLE_HOME/dbs. con: CREATE SPFILE [='nombre'] FROM PFILE [='nombre']. Si se omiten los nombres.

20. resto SGA): db_name=CURSOxy # Nombre de la BD.0 background_dump_dest = /u01/app/oracle/admin/CURSOxy/bdump core_dump_dest = /u01/app/oracle/admin/CURSOxy/cdump user_dump_dest = /u01/app/oracle/admin/CURSOxy/udump max_dump_file_size = 10240      # tamaño máximo fichero traza de 5M control_files = (/u02/oradata/CURSOxy/control1. compatible = 10.8*0. processes = 50 # Nº máx. checkpoints cada 30min.ORA Suponemos RAM=1Gb. un máximo de 50 sesiones simultáneas.ctl) undo_management = auto # Gestión automática de Rollback undo_tablespace = undo_rbs # Tablespace de “undo” pga_aggregate_target=160M # Espacio máx todas las PGAs (fuera de SGA) sga_max_size = 640M   # Tamaño máximo de la SGA (RAM*0.8) sga_target = 512M     # Gestión automática del reparto del espacio de SGA db_cache_size = 0     # Oracle asignará el tamaño automáticamente shared_pool_size = 0  # Oracle asignará el tamaño automáticamente large_pool_size = 0 java_pool_size = 0 log_buffer = 3145728 # Tamaño.2.80*0. gestión  automática de PGAs (RAM*0.ctl. de la caché de redo (3Mb) log_checkpoint_interval = 0   # desactiva “checkpoint interval” log_checkpoint_timeout = 1800 # checkpoint como mucho cada 30minutos. de procesos (background + sesiones) remote_login_passwordfile=EXCLUSIVE nls_territory=spain nls_language=spanish Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 31 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . en bytes.EJEMPLO DE INIT.  /u03/oradata/CURSOxy/control2.

– Multiplexaremos los redolog en discos diferentes. un spfile. Crearemos la BD con el comando CREATE DATABASE.ora.O. índices. autenticándonos contra  el S. • La  BD  la  podemos  crear  con  el  asistente  gráfico  (en  Linux  “dbca”)  o  con  el  comando CREATE DATABASE: – – – – Crearemos un fichero init.  catproc. – Guardaremos. al menos. Arrancaremos las instancia con STARTUP NOMOUNT. DISEÑO Y CREACIÓN DE UNA BD Administració n de Oracle 10g (Parte 2) 32 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Ejecutaremos  los  scripts  catalog. – Separaremos  los  ficheros  de  datos  que  provoquen  contención  en  disco.ora. • Desde 10g se puede borrar con “DROP DATABASE.CREAR LA BASE DE DATOS • Para crear una BD necesitamos: • Para ubicar los ficheros que componen la BD: – Conectarnos al servidor Oracle como “SYS AS SYSDBA”. o usando un fichero de claves. – Suficiente memoria para arrancar la instancia y espacio en disco para crear la BD. y si queremos.  por  ejemplo: datos.” (sólo montada).sql  que  están  en  $ORACLE_HOME/rdbms/admin. en discos separados. dos copias del fichero de control.sql.sql  y  catexp. temp y rollback.

   '/u04/oradata/CURSOxy/redo02.dbf' SIZE 10M DEFAULT TEMPORARY TABLESPACE TEMP    TEMPFILE '/u03/oradata/CURSOxy/temp01.    '/u04/oradata/CURSOxy/redo03. rem *** CREACION DE LAS VISTAS DEL DD *** @$ORACLE_HOME/rdbms/admin/catalog.dbf' SIZE 10M DEFAULT TABLESPACE USERS    DATAFILE '/u02/oradata/CURSOxy/users01.dbf' SIZE 10M    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K logfile '/u04/oradata/CURSOxy/redo01.EJEMPLO CON “CREATE  DATABASE” connect / as sysdba startup nomount CREATE DATABASE "CURSOxy"    maxdatafiles 254    maxinstances 1    maxlogfiles 32    character set WE8ISO8859P15 DATAFILE '/u02/oradata/CURSOxy/system01.log' SIZE 10M.log' SIZE 10M.dbf' SIZE 260M     AUTOEXTEND ON NEXT 10M    EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE '/u02/oaradata/CURSOxy/sysaux01.sql Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 33 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .sql @$ORACLE_HOME/rdbms/admin/catproc.log' SIZE 10M.dbf' size 100M    EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO  UNDO TABLESPACE UNDO_RBS    DATAFILE '/u03/oradata/CURSOxy/rbs01.

ORACLE MANAGED FILES (OMF) • • OMF  permite  que  Oracle  se  encargue  de  la  creación  de  los  ficheros  que  componen la BD. separando los ficheros redolog y de  control del resto: – Parámetros de inicialización (indicando dos copias de redolog y control): • DB_CREATE_FILE_DEST='/u02/oradata/CURSOxy' • DB_CREATE_ONLINE_LOG_DEST_1='/u03/oradata/CURSOxy' • DB_CREATE_ONLINE_LOG_DEST_2='/u04/oradata/CURSOxy' – Creación de la BD: CREATE DATABASE DEFAULT TABLESPACE USERS        DEFAULT TEMPORARY TABLESPACE TEMP UNDO TABLESPACE UNDO_RBS. usando OMF. Define el directorio donde se ubicarán los ficheros. OMF se activa mediante dos parámetros de inicialización: – DB_CREATE_FILE_DEST.  Establece  los  directorios  donde  se  guardarán (multiplexados) los ficheros redolog. Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 34 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . donde N puede valer de 1 a 5. Se pueden activar ambos parámetros o sólo uno ellos. simplificando la administración de la misma.  Nota. – DB_CREATE_ONLINE_LOG_DEST_N. • Ejemplo para crear una BD.

 Se pueden cambiar todos los parámetros del init. OLAP. etc). – Gestionar plantillas de BD: crear una plantilla a partir de otra. Administració n de Oracle 10g (Parte 2) DISEÑO Y CREACIÓN DE UNA BD 35 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . que contienen: • Sólo la estructura. • También con ficheros: no se puede cambiar nada. o a partir de  sólo la estructura de una BD. o también incluyendo los datos de la misma. – Añadir opciones a una BD existente (Java. – Borrar una BD.  Se  trata  de  un  asistente  gráfico  que  permite: – Crear una BD. Intermedia. Spatial. A partir de plantillas predefinidas.DBCA (DataBase Configuration  Assistant) • En  Unix/Linux  se  ejecuta  con  “dbca”.

V$BGPROCESS (Procesos background). DISEÑO Y CREACIÓN DE UNA BD • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 36 . V$CONTROLFILE (Ficheros de control de la BD).VISTAS DEL DD • • • • • • • • • • • • • • V$DATABASE (Base de datos). V$SGASTAT (SGA detallada). V$PROCESS (Procesos). V$SGA_DYNAMIC_COMPONENTS (Zonas dinámicas de la SGA). Nuevo en 10g es V$SGAINFO. V$DATAFILE (Ficheros de datos de la BD). V$LOGFILE (Ficheros redo log de la BD). V$INSTANCE (Instancia). V$SHARED_POOL_ADVICE (Estimaciones de tamaño de la SharedPool) V$BUFFER_POOL (Buffers en la caché de datos) V$DB_CACHE_ADVICE (Estimaciones db_cache_size) V$PGA_TARGET_ADVICE (Estimaciones pga_aggregate_target) V$SQLAREA (Sentencias SQL). V$SGAINFO (SGA).

  suponiendo  4Gb  de  RAM  y  21  instancias  con  10  usuarios  cada  una.PRACTICAS TEMA 2 • • 2. /u04 (BD). /u03.2.ora. como máximo. Antes de lanzar el comando de creación.  diseñando  requerimientos  de  memoria.ora.  Crear  un  init. Los checkpoints  sucederán cuando se llene el fichero redolog y. 2.  Tendremos  dos  copias  del  fichero  de  control en /u02 y /u03.5.1. 2. Diseñar una BD teniendo en cuenta las contiendas de E/S y la organización  de los tablespaces básicos. • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 DISEÑO Y CREACIÓN DE UNA BD 37 .  Crear  la  BD  que  hemos  diseñado  anteriormente. Consultar el “Simulador de DBCA”.4. 2. Suponer 4 discos: /u01 (SW) y /u02. 2.3.  Hacerlo  manualmente  con  CREATE  DATABASE.  y  para  la  que  también  hemos  creado  un  init. cada 30 minutos. y cambiando el nombre por OMFxy.  Se  puede  usar  un  máximo  del 64% de la RAM para las SGAs de todas las bases de datos.  La  gestión  de  rollback  será  automática. ponte de  acuerdo con un compañero para que no lo hagais a la vez. Crear la misma BD usando OMF.  El  nombre de la BD será ALUxy.

TEMA 3 ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 38 .

TEMA 3. RECYCLEBIN y drop table. Generación del espacio libre en un bloque. Extensiones y su asignación. 39 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Formato del bloque. Envío de correo con UTL_MAIL. Métodos de acceso a datos: índices B­tree y Bitmap. ESTRUCTURAS DE  ALMACENAMIENTO • • • • • • • • • • • • • Bloques. Varios tamaños de bloque en la misma BD. extensiones y segmentos. Gestión automática del espacio de los segmentos. Encolar y/o suspender la BD. Segmentos. Estructura de la fila. Comprimir los datos de un segmento.

  rollback. etc).  índices. • • Administració n de Oracle 10g (Parte 2) ESTRUCTURAS DE ALMACENAMIENTO 40 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . temporal.  4.  Todas  las  extensiones de un mismo segmento residen en el  mismo tablespace.  cuyo  tamaño  se  indica  con  el  parámetro  db_block_size.:  2.  de  modo  que  un  conjunto  contiguo de bloques forman una extensión. Oracle  asigna  espacio  a  un  segmento  en  unidades  de  una  extensión. EXTENSIONES Y  SEGMENTOS • La unidad mínima de asignación de espacio es el  bloque  de  datos  (múltiplo  del  bloque  del  S. Oracle  pide  espacio  en  múltiplos  del  bloque  de  datos.  16  y  32Kb).BLOQUES.O.  8. Y las  extensiones  forman  segmentos  de  una  determinada  estructura  de  datos  (tablas.

32.8. recycle o default. se puede especificar una tamaño de  bloque “no estandar”. Al crear un tablespace.  No  se  pueden  indicar  tamaño  de  bloque  no  estandar  para  tablespaces  temporales. Dimensiona hasta 4 cachés con tamaño de bloque “no  estandar”. Dimensiona la caché donde se guardarán los bloques de  tablas que se usan con mucha frecuencia. Para ello debe estar definido el parámetro DB_CACHE_SIZE y. – El uso de una u otra caché lo indicaremos con el parámetro BUFFER_POOL. un DB_nK_CACHE_SIZE.  Dimensiona  la  caché  por  defecto.  que  siempre  existe  y  cuyo  tamaño no puede valer cero. – DB_RECYCLE_CACHE_SIZE.  y  definiendo  la  correspondiente caché de datos con el nuevo tamaño de bloque. al  menos. de la  clausula STORAGE de la tabla (a nivel de partición no): keep. – DB_KEEP_CACHE_SIZE. con la clausula BLOCKSIZE. La Database Buffer Cache consta de tres cachés independientes: – DB_CACHE_SIZE.  Dimensiona  la  caché  que  almacena  los  bloques  de  las tablas que se usan muy poco. con n=2. se  pueden  usar  otros  tamaños  (>=9i)  indicándolo  a  nivel  de  tablespace. DB_nK_CACHE_SIZE (>=9i).4.16.DIFERENTES TAMAÑOS DE  BLOQUE EN LA MISMA BD • • Aunque el parámetro db_block_size define el tamaño del bloque “estandar” de la BD. ESTRUCTURAS DE ALMACENAMIENTO • • Administració n de Oracle 10g (Parte 2) 41 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . de  forma que n coincida con el valor que acompaña a  BLOCKSIZE.

  tipo  de  segmento. 4 bytes.FORMATO DEL BLOQUE • • • • • – Cabecera:  información  general  del  bloque  (dirección  del  bloque.  y  también  para  registrar  las  transacciones (“transaction entries”. unos 23 bytes por cada una).  Como  media. Directorio de filas: información sobre las  filas que actualmente contiene el bloque  (direcciones. Directorio de tabla: información sobre la  tabla. etc). Overhead  (es  el  conjunto  de  los  tres  anteriores). etc). 2 bytes por fila. 4 bytes. ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 42 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .  su  tamaño  oscila entre 84 y 107 bytes. Datos Espacio  libre:  se  usa  para  inserts  y  updates.

  Si  se  trata  de  una  fila  que aumenta de tamaño por un update. Sentencias  que  generan  espacio  libre  en  un  bloque:  delete  y  update.  no  se  permitirán  más  inserciones (hasta que el espacio ocupado no baje de PCUSED). pero no está contiguo. • • • Administració n de Oracle 10g (Parte 2) 43 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . – Sucede en otra transacción después del commit de la primera. Se  reservará. Row  Chaining  (y  Migration).  el  espacio  libre  indicado  por  PCTFREE  (%)  para  actualizaciones.  Si  una  nueva  fila  no  cabe  en  un  bloque.GENERACION DE ESPACIO LIBRE  EN UN BLOQUE • • Oracle recomienda el uso de la gestión automática del espacio libre (>=9i). – El insert sucede en la misma transacción que libera espacio. ESTRUCTURAS DE ALMACENAMIENTO – Se hace al crear un tablespace con “SEGMENT SPACE MANAGEMENT AUTO”.  al  menos. Sólo se compactará si al hacer  un insert/update hay suficiente espacio libre. y no cabe en el bloque.  será  almacenada  en  una  “cadena  de  bloques”  (dos  o  más). – Nota: los tablespaces con gestión automática de segmentos (>=9i) no  necesitan PCTUSED.  Cuando  el  espacio  libre  baje  a  pctfree. su contenido  será “migrado” a otro bloque. manteniendo un puntero en el bloque original.  Dicho  espacio quedará disponible para los inserts posteriores si: El espacio libre no tiene por qué estar contiguo.

 4 para el bloque y 1 para fila dentro del  bloque). – varchar2(n): hasta n bytes.. – Cabecera de columna: 1byte (o 3bytes si columna>250bytes).2).5.. – Date: 8 bytes desde 9i (antes 7 bytes) – number(n. – Columna: datos (si null. más 1 byte. – Rowid: 6 bytes (1 para el fichero. – Columna . • Administració n de Oracle 10g (Parte 2) ESTRUCTURAS DE ALMACENAMIENTO 44 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .m): n/2(entero mayor).ESTRUCTURA DE LA FILA • Estructura de la fila: – Cabecera: 3 bytes (de ellos un byte para nºcolumnas).  9/2=4. no ocupa espacio). – Cabecera de columna. 5+1=6. Longitud de las columnas: – char(n): n bytes. Por ejemplo: number(9.

Oracle  recomienda  usar  tablespaces  “manejados  localmente”  (>=8i). Las  extensiones  vacías  no  se  devuelven  al  tablespace  hasta  que  se  borra  el  objeto  (drop  table/cluster). DEALLOCATE UNUSED. minextents. Una o más extensiones componen un segmento. – Autoallocate.  con  extensiones  de  tamaño  uniforme  (uniform  size)  o  variable  (autoallocate). • Si el tablespace se crea con gestión automática de segmentos y  db_block_size>=16K.”.. • • Para asignar una extensión a un segmento.  a  no  ser  que  hagamos  “TRUNCATE  .  Es  el  defecto  para  tablespaces  permanentes. ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 45 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . pctincrease.” o “ALTER TABLE .  Los  tablespaces  temporales  “locales”  sólo  pueden  usar  este  tipo de asignación de extensiones. next.  DROP  STORAGE...  donde  ya no sirven los parámetros initial. maxextents del  “default storage”: – Uniform Size. en un tablespace local. el tamaño mínimo de la extensión será 1M.. Puedes indicar el tamaño de la extensión (al menos 5 bloques) o usar el  valor  por  defecto  (1M). Puedes definir la extensión inicial y Oracle determina el tamaño  óptimo  para  las  siguientes  (tamaño  mínimo  64Kb). Oracle busca  en el bitmap del fichero el número requerido de bloques libres contiguos.EXTENSIONES  Y SU ASIGNACIÓN • • Una  extensión  es  una  unidad  lógica  de  almacenamiento  compuesta  por  un  conjunto de bloques contiguos.

  dentro  de  un  tablespace  (segmentos de datos.... Segmentos  temporales:  Oracle  los  usa  para  hacer  ordenaciones. o partición de uno particionado.  También se usan para crear  tablas temporales y sus índices (son tablas que contienen datos sólo durante una  transacción  o  una  sesión).. union..  Sin  MTS.  que  no  caben  en  memoria:  create  index..SEGMENTOS • • • • • Un  segmento  es  un  conjunto  de  extensiones  que  contienen  todos  los  datos  de  una  estructura  lógica  de  almacenamiento  específica. segmentos temporales. Segmento de  índices:  índice no particionado. etc).  order  by. segmentos de índice. ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 46 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .  select  . minus.  usar  pga_aggregate_target  para  todas  las  áreas de sort de todas las sesiones (todas las PGAs). o una partición de una particionada. El  primer  bloque  de  un  segmento  (Header)  contiene  un  directorio  de  las  extensiones que lo integran.  select  .  select  distinct. Segmento de datos: es una tabla normal. intersect. select .  select ...  group  by... No  tienen que estar en el mismo tablespace que las tablas correspondientes.  Se  puede  mejorar  su  rendimiento  ajustando  el  parámetro  sort_area_size. select . o  un cluster de tablas.

  y también mejor rendimiento en las operaciones concurrentes de inserción. Se puede activar sólo para los tablespaces permanentes manejados localmente. siendo más fácil. y que se guarda en un conjunto independiente de bloques. Ya no hace falta PCTUSED.  excepto el SYSTEM: CREATE TABLESPACE TSP_CURSO  DATAFILE '/u02/oradata/CURSO/tsp_curso01.dbf' SIZE 10M  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K  SEGMENT SPACE MANAGEMENT AUTO. no tiene vuelta atrás. Se ignoran las clausulas PCTUSED.GESTION AUTOMATICA DEL  ESPACIO DE LOS SEGMENTOS • • • Desde  la  versión  9i  se  incluye  la  posibilidad  de  gestionar  el  espacio  de  los  segmentos automáticamente. FREELISTS y FREELISTS GROUPS. ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 47 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . • • • Una  vez  creado  un  tablespace  local  con  gestión  automática  del  espacio  de  los  segmentos. Oracle recomienda la gestión automática porque obtiene mayor rendimiento y es  mucho más fácil de mantener. Cada segmento contiene un bitmap que describe el estado de ocupación de cada  bloque. con mejor utilización del espacio.

 como datawarehouse. Los datos se comprimen. El factor de compresión será mayor  en  bloques  con  valores  repetidos. ordenando por columnas con baja cardinalidad. se compriman los datos en las tablas que contenga. Se reduce el uso de disco y memoria (caché de datos) y se recomienda para las  operaciones de sólo lectura.  Esto  es  muy  útil  en  entornos  con  muy  pocas  actualizaciones  (insert/update). • • • Administració n de Oracle 10g (Parte 2) ESTRUCTURAS DE ALMACENAMIENTO 48 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Al  crear  un  tablespace. eliminando los valores repetidos de una  misma columna. para que Oracle intente comprimir los datos (excepto para tipos  LOB  y  tablas  IOT).COMPRESION DE LOS  SEGMENTOS DE DATOS • Podemos  indicar  la  clausula  COMPRESS  al  crear  una  tabla  (por  defecto  será  NOCOMPRESS). que se guardan en una tabla. en cada bloque.  podemos  indicar  COMPRESS  en  la  clausula  DEFAULT.  Se  pueden  reorganizar  las  filas  agrupando  valores  repetidos  de  una  columna  en  el  mismo  bloque:  “create  table  as  select  order by”.  para que por defecto.

 muy útiles para accesos en sólo lectura sobre columnas de baja  cardinalidad.  cuando  vayamos  a  hacer  consultas  que  acceden frecuentemente a no más del 10­15% de las filas de la tabla.  Son  útiles  para  tablas  estaticas  que  se  acceden  con  frecuencia  por  la  clave  primaria  (casi  todas  sus  columnas forma parte de la PK). En general no será necesario. Indices Bitmap. (comprueba uso) – ALTER INDEX nombre MONITORING USAGE.  No  usarlos  si  se  hacen  updates  con  frecuencia  (aplicaciones  OLTP). Las  IOT  son  tablas  almacenadas  en  un  índice  B­tree. Administració n de Oracle 10g (Parte 2) 49 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . (activa seguimiento) – SELECT * FROM V$OBJECT_USAGE.  en  tablas  muy  grandes  (aplicaciones  DSS). – Con los borrados se va perdiendo espacio. NO.  Muy  eficientes  para  predicados  OR. Bloqueos a nivel de segmento de bitmap (no de fila).'indice').  en  general. – v$segment_statistics (statistics_level=typical u all) Falsos mitos sobre degradación de índices: – Con el tiempo el arbol b­tree puede perder el “balanceo”. – index_stats: analyze index i_nombre validate structure. el espacio se reutiliza.gather_index_stats('owner'. (desactiva seguimiento) • • • • create bitmap index i_b_nombre on t_tabla (cols) tablespace tsp_nombre. NO. ESTRUCTURAS DE ALMACENAMIENTO – ALTER INDEX nombre MONITORING USAGE. el índice se vuelve ineficiente. – Si los niveles del árbol llegan a 'x'. pero podemos reconstruir un índice: alter index i_nombre rebuild. Comprobar si un índice se usa (>=9i): Vistas donde ver estadísticas de índices: – dba_indexes: dbms_stats. NUNCA. y que no van a tener ningún otro índice.METODOS DE ACCESO A DATOS INDICES B­TREE Y BITMAP • • • Usaremos  índices  B­tree.

RECYCLE BIN Y DROP TABLE • • • • • RECYCLE BIN (>=10g). Tb con “ALTER SYSTEM | SESSION . Borrar directamente sin pasar por RECYCLEBIN: – DROP TABLE tabla PURGE. Tb con SHOW  RECYCLEBIN (desde sql*plus). Ver todas las tablas borradas. Borrar definitivamente: – PURGE TABLE tabla.”.. DBA_RECYCLEBIN.. ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 50 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . Se puede desactivar con parámetro del init “recyclebin = off” (por defecto  “on”). En  USER_RECYCLEBIN o RECYCLEBIN. sólo las mías. Contenedor donde Oracle guarda las tablas  borradas (a no ser q se borre con la opción PURGE). Recuperar tabla borrada: –  FLASHBACK TABLE tablaBorrada TO BEFORE DROP. – PURGE TABLESPACE nomtsp [USER usuario]. (tb PURGE INDEX) Sólo van a RECYCLEBIN los índices de las tablas borradas (no con DROP  INDEX) • – PURGE RECYCLEBIN | DBA_RECYCLEBIN.

sql SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.ENVIAR CORREO DESDE ORACLE Paquete UTL_MAIL • • El  paquete  UTL_MAIL  (>=10g)  no  se  instala  por  defecto  por  razones  de  seguridad. Instalar UTL_MAIL desde el SYS: SQL> @$ORACLE_HOME/rdbms/admin/utlmail.plb Para poder usar UTL_MAIL hay que definir el parámetro SMTP_OUT_SERVER.nu ll.es'.'La fecha actual es '|| to_char(sysdate.null. podremos enviar un mensaje  con utl_mail.'Prueba desde Oracle 10g'.miDominio' Una vez arrancada la BD con el nuevo parámetro.  en el init: smtp_out_server='miServidorDeCorreo.'dd/mm/yyyy hh24:mi:ss')) PL/SQL procedure successfully completed.send: SQL> exec  utl_mail. ESTRUCTURAS DE ALMACENAMIENTO • • Administració n de Oracle 10g (Parte 2) 51 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .'destinatario@um.send('remitente@dominio'.

  Util  si  el  DBA  necesita  que  no  haya  transacciones  ni  consultas concurrentes a la suya. ALTER SYSTEM RESUME.  ¡¡¡  Ojo  !!!.  Util  para  copias  de  seguridad  en  caliente.ACTIVE_STATE: – ALTER SYSTEM QUIESCE RESTRICTED. Espera a que terminen transacciones/consultas  (se  pueden  ver  en  V$BLOCKING_QUIESCE)  e  impide  nuevas  (excepto  de  SYS/SYSTEM)... ... “Suspender”  la  BD  (>=9i). V$INSTANCE. ALTER TABLESPACE nomtsp END BACKUP.  no  cerrar  la  sesión  que  hace  el  SUSPEND pues es la única que puede hacer RESUME: ALTER TABLESPACE nomtsp BEGIN BACKUP.  V$INSTANCE.  . pues no se hace checkpoint).  Sólo  SYS/SYSTEM.DATABASE_STATUS. ALTER SYSTEM SUSPEND.ENCOLAR Y SUSPENDER LA BD Quiesce y Suspend • “Encolar”  la  BD  (>=9i). Administració n de Oracle 10g (Parte 2) ESTRUCTURAS DE ALMACENAMIENTO • 52 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . – ALTER SYSTEM UNQUIESCE.  Suspende  E/S  a  ficheros  de  datos  y  control  (los  tablespaces  deben  estar  en  modo  “hot  backup”  con  ALTER  TABLESPACE  BEGIN  BACKUP). // Copiamos ficheros de la BD (necesitará “recuperar la  instancia”. Sólo desde SYS/SYSTEM.

SELECT DBMS_METADATA.'T1') FROM DUAL. incluyendo si está encolada y/o  suspendida) SELECT DBMS_METADATA.VISTAS DEL DD • • • • • • • • • • • DBA_TABLESPACES (Tablespaces de la BD). ESTRUCTURAS DE ALMACENAMIENTO Administració n de Oracle 10g (Parte 2) 53 © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 . DBA_FREE_SPACE (Extensiones libres en cada tablespace). sin indicar PURGE) V$INSTANCE (Datos de la instancia. DBA_EXTENTS (Extensiones que componen los segmentos). con estadísticas). DBA_INDEXES (Indices creados sobre tablas de la BD. DBA_SEGMENTS (Segmentos que hay en los tablespaces). INDEX_STATS (estadísticas de índices) V$SEGMENT_STISTICS (estadísticas de segmentos) DBA_RECYCLEBIN (objetos borrados con DROP. (muestra la  sentencia DDL para crear la tabla T1). se puede indicar SYSTEM_GRANT y  ROLE_GRANT). (muestra las sentencias GRANT q otorgan al usuario los privilegios  que tiene.GET_DDL('TABLE'.GET_GRANTED_DDL('OBJECT_GRANT'. Además de OBJECT_GRANT.  USUARIO').

 Definir también  una  caché  para bloques de 4Kb.  Crear  un  tablespace  SEGAUTO  con  gestión  automática  de  segmentos. 3.  Insertar  1000  filas  en  TABLA02  y. con 1M. Comprobar el tamaño del bloque de la BD. Crear una tabla TABLA02 con una sola columna varchar2(100).  Definir la  caché keep con 1M.  Hacer  “truncate  table”  y  comprobar  de  nuevo  el  espacio ocupado por la tabla. y otra  llamada TABLA02COMPRI igual que la anterior.3. con una columna  VARCHAR2(1000).  Borrar  todas  las  filas  con  “delete”  y  comprobar  las  extensiones  de  la  tabla.PRACTICAS TEMA 3 • • • 3. pero con compresión de  datos.  Insertar  tres  filas  de  forma  que  ocupe  varias  extensiones. Crear una tabla TABLA01 en el tablespace anterior.1. 3. 3. ¿Cuántos bloques necesita cada tabla para almacenar  las mismas filas? • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 ESTRUCTURAS DE ALMACENAMIENTO 54 .2. ¿Cuántas cachés de datos  hay definidas?.  esas  mismas  1000  en  TABLA02COMPRI.  luego.4.

 Estimar  el tamaño medio de la fila. c2 varchar2(10). 3.  Crear  una  tabla TABLA03.  número  de  bloques  y  longitud  media  de  la  fila).8.  ¿Se  puede  poner  pga_aggregate_target=0? ¿cómo desactivar pga_aggregate_target? 3. insertar  100  filas  en  la  tabla  .5. Hacer una prueba de envío de correo con utl_mail.6.  calcular  las  estadísticas  y  comprobar  los  datos  calculados  (número  de  filas. igual que TABLA01.2).  Crear  tablespace  TSP4K  con  tamaño  de  bloque  de  4Kb. c3 date y c4 number(10.  Instalar  el  paquete  UTL_MAIL  y  configurar  el  parámetro  del  init  smtp_out_server. • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 ESTRUCTURAS DE ALMACENAMIENTO 55 . 3.  Comprobar  los  parámetros  pga_aggregate_target.  con  cuatro  columnas: c1 char(2). y comprobar cuantos bloques ocupan  las dos y comparar los datos.  workarea_size_policy  y  sort_area_size.send.7.  Crear  una  TABLA04  en  el  tablespace  SEGAUTO. y el número medio de filas por bloque.PRACTICAS TEMA 3 • • • 3.

TEMA 4 NUEVAS FUNCIONALIDADES DE  MONITORIZACIÓN Y AJUSTE Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 56 .

Segment Shrink. UNDO Advisor. AWR (Automatic Workload Repository). Segment Advisor. NUEVAS FUNCIONALIDADES DE  MONITORIZACIÓN Y AJUSTE. SQL Tuning Advisor. ADDM (Automatic Database Diagnostic Monitor). • • • • • • • • • Nueva infraestructura. DBMS_ADVISOR. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 57 .TEMA 4. Vistas AWR.

Active Session History (ASH).create_snapshot().sql NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 58 . Automatic Database Diagnostic Monitor (ADDM).  V$SESS_TIME_MODEL. Mejor q STATSPACK. En base a los datos recopilados  por  AWR  y  ASH. – OS statistics. “DB CPU”. – Metrics (cada 60seg): V$SYSMETRIC. V$METRICNAME. MMNL). por defecto  cada 60min y máx 7 días (procesos MMON.NUEVA INFRAESTRUCTURA • • • • Nueva  infraestructura  =  AWR  +  Time  Model  +  ASH  (El  parámetro  STATISTICS_LEVEL debe valer TYPICAL u ALL). etc): V$SYS_TIME_MODEL. Automatic Workload Repository (AWR). – $ORACLE_HOME/rdbms/admin/addmrpt. Recopila muestras cada segundo de las sesiones  activas  de  V$SESSION:  V$ACTIVE_SESSION_HISTORY.  V$EVENTMETRIC.  DBA_HIST_ACTIVE_SESS_HISTORY. Vistas v$ + volcado a disco. V$OSSTAT.  – EXECUTE dbms_workload_repository. V$SESSMETRIC. V$FILEMETRIC. Nuevo  “Time  Model”:  estadísticas  y  métricas  relativas  al  tiempo  consumido  por  las sesiones activas en llamadas a la BD (consultas/actualizaciones). V$SESSION_WAIT_CLASS. V$WAITCLASSMETRIC.  identifica  problemas  y  sus  posibles  causas. – Wait Classes: V$SYSTEM_WAIT_CLASS. – Time Model (“DB time”.  proporcionando  recomendaciones e indicando los beneficios q se obtendrán.

 seguido de "Repositorio de Carga de Trabajo Automática" bajo "Gestión  de Estadísticas". Informe ASH (V$ACTIVE_SESSION_HISTORY):  $ORACLE_HOME/rdbms/admin/ashrpt. Incluye las tareas del administración del AWR. muestra estadísticas de una sentencia SQL para un rango de snapshots. Existe awrrpti.sql.AUTOMATIC WORKLOAD  REPOSITORY (AWR) • Snapshots. 'FALSE). 32). Permitiendo modificar la configuración de AWR y gestionar los  snapshots. Ej de cambio a intervalo de 30días cada  30min (expresado en minutos y si intervalo=0 no se calculan más snapshots): – DBMS_WORKLOAD_REPOSITORY. compara atributos detallados de rendimiento y valores de configuración  entre dos períodos de tiempo. – DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(43200. Config en DBA_HIST_WR_CONTROL. y el nombre  del fichero del informe.sql. borra los snaphosts asociados Informes AWR en $ORACLE_HOME/rdbms/admin (con salida en HTML o TEXTO): – awrrpt.sql.create_baseline (210. ­­ Borra rango Baselines. OEM. Acceso desde enlace  "Administración". – awrddrpt. 'batch baseline'). NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 59 .drop_baseline ( 'batch baseline'. ­­  Snapshots inicial y final. – awrsqrpt. Pareja de snapshots (q ya no se borrarán). – DBMS_WORKLOAD_REPOSITORY. 220.sql q permite seleccionar una instancia. y nombre para el baseline – DBMS_WORKLOAD_REPOSITORY. los snapshots inicial y final.drop_snapshot_range (22. pedirá formato salida (text o html). ­­ Si  TRUE.sql.30).

CREATE_SNAPSHOT(). DBA_HIST_SQL_PLAN. Histórico de ASH.es/oradoc102/server. Configuración del AWR. V$METRICGROUP. V$METRIC_HISTORY. Vistas AWR: V$ACTIVE_SESSION_HISTORY. DBA_HIST_WR_CONTROL. Histórico de métricas recopiladas. Baselines. V$METRIC.htm#i27008 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 60 .atica.  Tipos de métricas y agrupaciones de las mismas.VISTAS AWR • • – – – – – – – – – – – Se puede forzar la creación de un snapshot. Muestras de sesiones activas recopiladas cada  segundo (ASH). DBA_HIST_ACTIVE_SESS_HISTORY.um. Snapshots recopiladas. manualmente: EXECUTE DBMS_WORKLOAD_REPOSITORY. Métricas recopiladas. DBA_HIST_SNAPSHOT. Planes de ejecución de sentencias SQL. DBA_HIST_BASELINE. DBA_HIST_DATABASE_INSTANCE. Grupos de métricas. Más información sobre AWR: http://cursos. V$METRICNAME.102/b14211/autostat. Arranques de la BD.

 se toma un valor de 10000 microsegundos para la lectura  de un bloque de la BD. Entre dos snapshots del AWR.oracle. Análisis de resultados. – DBA_ADVISOR_FINDINGS.htm#sthref433” NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 61 . Recomendaciones resultantes del análisis. El informe estructura los problemas de rendimiento encontrados en  “FINDINGS”.SET_DEFAULT_TASK_PARAMETER(                      'ADDM'. indicando el porcentaje de impacto. Más información sobre ADDM: – “http://cursos.es/oradoc102/server. Informes. Para el análisis de E/S. – $ORACLE_HOME/rdbms/admin/addmrpt. – DBA_ADVISOR_RECOMMENDATIONS. Da recomendaciones para reducir la estadística  “DB time” (V$SYS_TIME_MODEL) o tiempo  total acumulado por la BD para atender las  consultas/actualizaciones de las sesiones activas (“ http://download. Si calculamos el valor real para nuestra BD.atica.sql. Vistas del DD: – DBA_ADVISOR_TASKS: ejecuciones de ADDM (tareas) con su identificación.AUTOMATIC DATABASE  DIAGNOSTIC MONITOR (ADDM) • • Se activa por defecto (statistics_level = TYPICAL u ALL.com/docs/cd/B19306_01/server.  Ordenar por RANK (importancia) y ver BENEFIT.htm#CIHCDGCI”). Tb usando el paquete  DBMS_ADVISOR.um. – DBA_ADVISOR_LOG: log de tareas ADDM (parece estar incluido en el anterior). 'DBIO_EXPECTED'. por defecto.102/b14211/diagnsis. podemos cambiarlo con: EXECUTE DBMS_ADVISOR. 8000).  indicando qué hacer (“ACTION”) y el por qué (“RATIONALE”). se desactiva con BASIC).102/b28051/tdppt_method. y para cada uno nos da recomendaciones. Problemas encontrados en el análisis.

END.   tname := ''. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 62 .          ­­ Task ID   tname               VARCHAR2(30). tid.   RETURN tname.   DBMS_ADVISOR.   ­­ Task Description BEGIN   ­­ Busca los ids de los snapshots correspondientes al rango de fechas. begin_snap ).   end_snap            NUMBER. 'END_SNAPSHOT' .EJECUTAR ADDM CON  DBMS_ADVISOR CREATE OR REPLACE FUNCTION run_addm(start_time IN DATE.EXECUTE_TASK(tname). 'MI') <= start_time.   DBMS_ADVISOR.    ­­ Task Name   tdesc               VARCHAR2(256). end_time IN DATE )   RETURN VARCHAR2 IS   begin_snap          NUMBER. ' || end_snap || ' )'. tname.   DBMS_ADVISOR.   ­­ Nombre de tarea = NULL y genera descripcion unica para la tarea.SET_TASK_PARAMETER(tname. tdesc ).   SELECT max(snap_id) INTO begin_snap FROM DBA_HIST_SNAPSHOT    WHERE trunc(end_interval_time.   DBMS_ADVISOR.   tid                 NUMBER.CREATE_TASK('ADDM'. 'START_SNAPSHOT'.   ­­ Crea la tarea y la ejecuta. end_snap ).SET_TASK_PARAMETER(tname.   SELECT min(snap_id) INTO end_snap FROM DBA_HIST_SNAPSHOT    WHERE  end_interval_time >= end_time.   tdesc := 'run_addm( ' || begin_snap || '.

SET PAGESIZE 0 LONG 1000000 LONGCHUNKSIZE 1000.OBTENER INFORME ADDM CON  DBMS_ADVISOR ­­ Configura variables y columnas SQL*Plus necesarias para el informe.task_name = :task_name   AND t.                           TO_DATE('21:00:00 20/10'.owner = SYS_CONTEXT( 'userenv'. ­­ Ejecuta run_addm() con parámetros 7pm y 9pm del dia 20 de Octubre. END.GET_TASK_REPORT(:task_name)   FROM DBA_ADVISOR_TASKS t  WHERE t. COLUMN get_clob FORMAT a80. ya que la función  DBMS_ADVISOR. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 63 .GET_TASK_REPORT devuelve un CLOB. 'session_user' ). Nota: la variable LONG de SQL*Plus debe asignarse a un valor suficiente  para mostrar el informe completo de ADDM. 'HH24:MI:SS DD/MM')). BEGIN   :task_name := run_addm( TO_DATE('19:00:00 20/10'. / ­­ Ejecuta GET_TASK_REPORT para obtener el texto del informe. SELECT DBMS_ADVISOR. 'HH24:MI:SS DD/MM'). VARIABLE task_name VARCHAR2(30).

 DBA_SQLTUNE_PLANS. Vistas relacionadas: • DBA_SQLTUNE_STATISTICS.SCRIPT_TUNING_TASK).CREATE_TUNING_TASK) Ejecutar tarea de ajuste de SQL (DBSM_SQLTUNE. Determina si es necesario crear estructuras de acceso: índices y/o vistas  materializadas. DBA_SQLTUNE_BINDS. OEM: “Enlaces Relacionados” (abajo) ­> “Central de Asesores” ­> “Asesor de  Ajustes SQL” (bajo Asesores).es/oradoc102/server. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 64 . Generar script con las recomendaciones del informe  (DBMS_SQLTUNE. V$SQLAREA.um.htm#i1010615”).EXECUTE_TUNING_TASK) Generar informe correspondiente a la tarea  (DBMS_SQLTUNE.REPORT_TUNING_TASK).um.102/b14211/sql_tune.SQL TUNING ADVISOR • – – • • – – – – – Asesor de Ajustes SQL  http://cursos. Paquete DBMS_SQLTUNE (“ http://cursos.atica.es/oradoc102/appdev.htm Verifica la validez de las estadísticas y si es necesario genera estadísticas  auxiliares. V$SQLSTATS.atica. Crear tarea de ajuste de SQL (DBMS_SQLTUNE. • V$SQL. V$SQL_BINDS.102/b14258/d_sqltun.

SQL TUNNING ADVISOR DBMS_SQLTUNE Seleccionar sentencias SQL q ya se han ejecutado: ­­ Sentencias sql con más de 500 buffer gets.SELECT_CURSOR_CACHE('buffer_gets > 500'))  ORDER BY sql_id. ­­ Datos de una sentencia concreta. SELECT sql_id. ­­ Sentencias sql de miUsuario con más de 500 buffer gets.SELECT_CURSOR_CACHE('sql_id =  ''4rm4183czbs7j''')). sql_text  FROM table(DBMS_SQLTUNE. sql_text  FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('buffer_gets > 500 and  parsing_schema_name = ''miUsuario''')) ORDER BY sql_id. sql_text  FROM table(DBMS_SQLTUNE. SELECT sql_id.SELECT_CURSOR_CACHE('elapsed_time > 5000000'))  ORDER BY sql_id. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 65 . SELECT *  FROM table(DBMS_SQLTUNE. ­­ Sentencias sql que tardaron más de 5 segundos SELECT sql_id.

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 66 . ­­ Limitando el tiempo de ajuste a 10 minutos EXEC :stmt_task := DBMS_SQLTUNE. time_limit => 600). variable stmt_task VARCHAR2(64).CREATE_TUNING_TASK(begin_snap => 1.time_id and s.time_id = t. EXEC :stmt_task := DBMS_SQLTUNE.SQL TUNNING ADVISOR DBMS_SQLTUNE Diferentes formas de crear tareas de ajuste SQL.time_id = TO_DATE(''29/01/07'')'). ­    end_snap => 2. ­­ Con el texto de la sentencia.CREATE_TUNING_TASK(sql_id =>  'ay1m3ssvtrh24'). times t where  s. sql_id => 'ay1m3ssvtrh24').CREATE_TUNING_TASK( ­   sql_text => 'select quantity_sold from sales s. ­­ Indicando un intervalo de snapshots del AWR EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id =>  'ay1m3ssvtrh24'. ­­ Con el identificador (Sql_id en cursor cache) EXEC :stmt_task := DBMS_SQLTUNE.

script_tuning_task. EXEC DBMS_SQLTUNE.REPORT_TUNING_TASK(:stmt_task) FROM DUAL. SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = :stmt_task.SQL TUNNING ADVISOR DBMS_SQLTUNE ­­ Ejecuto la tarea de ajuste. ­­ Genero el script para aplicar las correcciones sugeridas por el ­­ informe anterior.EXECUTE_TUNING_TASK(:stmt_task).SCRIPT_TUNING_TASK(:stmt_task) FROM DUAL. SET LONG 1000000 LONGCHUNKSIZE 100000 LINESIZE 100 PAGESIZE 10000 SELECT DBMS_SQLTUNE.report_tuning_task y dbms_sqltune. ­­ Genero el informe.  SELECT DBMS_SQLTUNE. Nota: Desde sqlplus es necesario hacer “set long 1000000” (puede q con  menos sea suficiente) para poder ver el clob completo devuelto por  dbms_sqltune. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 67 . ­­ Compruebo si la tarea ha terminado.

­­ Libera las extensiones que estén vacías ALTER TABLE mitabla DEALLOCATE UNUSED KEEP integer. ­­ Reorganiza una sola partición de una tabla particionada ALTER TABLE mitablapart MODIFY PARTITION mipart1 SHRINK SPACE. LOBS) ALTER TABLE mitabla SHRINK SPACE CASCADE. ­­ Para poder reorganizar las filas de una tabla hay q permitir q ­­ puedan cambiar los rowids ALTER TABLE mitabla ENABLE ROW MOVEMENT. ­­ Reorganiza sólo el segmento de overflow de un IOT ALTER TABLE mitablaiot OVERFLOW SHRINK SPACE.e. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 68 . ALTER INDEX miindice DEALLOCATE UNUSED KEEP integer. ­­ Reorganiza sólo un LOB ALTER TABLE mitabla MODIFY LOB (milob) (SHRINK SPACE). ­­ Reorganiza un IOT y el segmento de overflow ALTER TABLE mitablaiot SHRINK SPACE CASCADE.SEGMENT ADVISOR Segment SHRINK Esta operación compacta el contenido de un segmento y devuelve extensiones libres. ALTER CLUSTER micluster DEALLOCATE UNUSED KEEP integer. ­­ Reorganiza las filas de una tabla y todos sus segmentos (p.

execute_task(name).   descr varchar2(500). attr5 => NULL.set_task_parameter(name. 'TRUE'). object_id => obj_id). 'TRUE').create_object (task_name => name. Manualmente: variable id number.SEGMENT ADVISOR Ejecución manual Para ejecutarlo hacen falta los privilegios ADVISOR y CREATE JOB o CREATE ANY  JOB. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION 69 . / SELECT STATUS FROM DBA_ADVISOR_TASKS WHERE TASK_ID=:id.set_task_parameter(name. task_desc => descr).   dbms_advisor. object_type =>  'TABLE'. declare   name varchar2(100).   obj_id number.   descr:='Ejemplo con Segment Advisor'.   dbms_advisor.   dbms_advisor.   dbms_advisor. attr1 => 'miUsuario'. task_name => name. 'recommend_all'. attr2 => 'miTabla'. 'verbose'. end.   dbms_advisor. task_id  => :id.  attr4 => NULL. Desde OEM: “Enlaces relacionados” (abajo) ­> “Central de Asesores” ­>  “Asesor de segmentos” (bajo “Asesores”). begin   name:='miTablaSegAdv'. attr3 => NULL.create_task (advisor_name => 'Segment Advisor'.

SEGMENT ADVISOR Ver resultados
select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type,  af.message, af.more_info   from dba_advisor_findings af, dba_advisor_objects ao   where ao.task_id = af.task_id and ao.object_id = af.object_id and  af.task_id=:id; (Genera la siguiente salida) ... The free space in the object is less than 10MB. Allocated Space:3145728: Used Space:3000902: Reclaimable Space :144826:

AUTOMATIC SEGMENT ADVISOR (ASA). Identifica segmentos candidatos a  “shrink”. No analiza todos los objetos de la BD. Examina las estadísticas de la BD  y muestras de segmentos, para seleccionar: tablespaces que se acercan a los  niveles críticos o de alerta, segmentos con más activiidad y segmentos que han  crecido más. • Intervalo de ejecución de ASA: MAINTENANCE_WINDOW_GROUP (L­V una vez  a partir de las 22h y hasta 6h; y S una vez a partir de las 0h hasta 0h del L) • Vistas del ASA: •DBA_AUTO_SEGADV_SUMMARY: ejecuciones de ASA. •DBA_AUTO_SEGADV_CTL: objetos seleccionados para ser analizados.
• Más info: http://cursos.atica.um.es/oradoc102/server.102/b14231/schema.htm#CHDHBHAB
NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

70

UNDO ADVISOR DBMS_UNDO_ADV
­­ Algunas funciones del paquete DBMS_UNDO_ADV: FUNCTION BEST_POSSIBLE_RETENTION RETURNS NUMBER ­­Con undo size actual FUNCTION LONGEST_QUERY RETURNS NUMBER ­­Query q mas ha tardado, en s. FUNCTION REQUIRED_RETENTION RETURNS NUMBER ­­Para query q mas tardó FUNCTION REQUIRED_UNDO_SIZE RETURNS NUMBER ­­Para actual undo_retention  Argument Name                  Type                    In/Out Default?  ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­ ­­­­­­­­  RETENTION                      NUMBER                  IN FUNCTION UNDO_HEALTH RETURNS NUMBER  PROBLEM                        VARCHAR2                OUT  RECOMMENDATION                 VARCHAR2                OUT  RATIONALE                      VARCHAR2                OUT  RETENTION                      NUMBER                  OUT  UTBSIZE                        NUMBER                  OUT FUNCTION UNDO_INFO RETURNS BOOLEAN  TABLE_SPACE_NAME               VARCHAR2                OUT  TABLE_SPACE_SIZE               NUMBER                  OUT  AUTO_EXTEND                    BOOLEAN                 OUT  UNDO_RETENTION                 NUMBER                  OUT  RETENTION_GUARANTEE            BOOLEAN                 OUT Nota: la info obtenida se calcula con datos desde último arranque.  Muchas funciones tienen versiones con parámetros fecha ini y fin.
Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION

71

PRACTICAS TEMA 4

• • • • • •

4.1. Consultar las principales vistas dinámicas de la 10g relacionadas con el  AWR:  V$OSSTAT,  V$SYS_TIME_MODEL,  V$SES_TIME_MODEL,    V$SYSMETRIC,  V$SESSMETRIC,  V$FILEMETRIC,  V$EVENTMETRIC,  V$SYSTEM_WAIT_CLASS,  V$SESSION_WAIT_CLASS,    V$WAITCLASSMETRIC. 4.2. Probar AWR. 4.3. Probar ASH. 4.4. Probar ADDM. 4.5. Probar SQL TUNING 4.6. Probar SEGMENT ADVISOR. 4.7. Probar UNDO ADVISOR.

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

NUEVAS FUNCIONALIDADES DE  AJUSTE Y MONITORIZACION

72

TEMA 5  MONITORIZACIÓN Y AJUSTE TRADICIONAL Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 73 .

Vistas dinámicas: información del sistema y de las sesiones. Ajuste de la CPU.TEMA 5. Ajuste de los buffers redo log. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 74 . Ajuste del rollback. • • • • • • • • • • • Eventos de espera. Utilidad STATSPACK. Ajuste del tablespace temporal. Ajuste de las sentencias SQL. MONITORIZACIÓN Y AJUSTE TRADICIONAL. Ajuste de los checkpoints. Ajuste de la buffer cache. Ajuste de la Shared­Pool.

buffer busy waits: hay contención E/S (ajustar E/S o distribuir datos). V$SESSION_EVENT. free buffer waits: DBWR escribe poco a menudo (subir nº de checkpoints).102/b14237/waitevents. Sesiones que están esperando actualmente. Eventos más comunes: – – – – – – – – – Para recibir valores en WAIT_TIME poner TIMED_STATISTICS=TRUE. pero multibloque (ajustar E/S o distribuir datos).EVENTOS DE ESPERA • • • • • V$EVENT_NAME. V$SESSION_WAIT. db file sequential read: hay contención E/S (ajustar E/S o distribuir datos) db file scattered read: igual anterior. latch free: contención en latches (verificar V$LATCH).  V$SYSTEM_EVENT. por sesión. Esperas totales por evento desde arranque de BD. undo segment extension: demasiadas extensiones dinámicas (ampliaciones y  reducciones) de los segmentos de rollback (ajustar tamaño).atica. La misma información anterior. Lista de posibles esperas.htm#i968375 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 75 . http://cursos.um. Nota: la lista completa de eventos está en el manual “Oracle10g Database Reference”.es/oradoc102/server. db file parallel write: checkpoints muy espaciados (subir su número). undo segment tx slot: faltan segmentos de rollback (añadir más).

 Ver diapositivas anteriores. de este mismo tema.VISTAS DINAMICAS  INFORMACION DEL SISTEMA • • AWR (>=10g). – V$PROCESS: procesos oracle. V$SQLAREA: Sentencias SQL y estadísticas asociadas. Base de datos – V$SYSTEM_EVENT: esperas totales por evento. Ver tb V$SGAINFO (>=10g). V$DB_OBJECT_CACHE: Objetos que hay en la Library Caché. V$LIBRARYCACHE: Rendimiento de la Library Caché. – V$SORT_SEGMENT: estado de uso de los segmentos temporales. Memoria – – – – – V$BUFFER_POOL_STATISTICS: estadísticas de la caché de datos. – V$PGASTAT: estadísticas de uso de la PGA. – V$SGASTAT: estado de uso de la SGA. – V$SESSION: sesiones en curso. – V$WAITSTAT: estadísticas de contención. • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 76 . – V$SYSSTAT: estadísticas básicas de la instancia. V$ROWCACHE: Rendimiento de la Dictionary Caché.

– V$TEMPSTAT: Estadísticas de E/S de los ficheros temporales.VISTAS DINAMICAS  INFORMACION DEL SISTEMA • • E/S – V$FILESTAT: Estadísticas de E/S de los ficheros de datos. – V$WAITSTAT: Estadísticas de contención. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 77 . Contención – V$LATCH: Estadísticas de latches. – V$UNDOSTAT: Estadísticas de undo. – V$ROLLSTAT: Estadísticas de los segmentos de rollback.

http://cursos. Nota: la lista completa de vistas dinámicas está en el manual “Oracle10g Database Reference”. – V$SESSION_WAIT: esperas de cada sesión. – V$SESSION_EVENT: eventos de cada sesión. – V$LOCK: bloqueos actuales y peticiones de bloqueo. – V$TRANSACTION: transacciones en curso.htm Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 78 .um. – V$ACCESS: objetos bloqueados y las sesiones que los están usando.102/b14237/toc. – V$SESSTAT: estadísticas de cada sesión. – V$SORT_USAGE: segmentos temporales en uso – V$SESS_IO: estadísticas de E/S de cada sesión.VISTAS DINAMICAS  INFORMACION DE SESIONES • Sesión (datos de las sesiones actualmente en curso) – V$SESSION: sesiones. – V$OPEN_CURSOR: cursores abiertos y compilados.atica.es/oradoc102/server.

– Frecuentes errores ORA­04031. – No dispone de una zona en disco para paginar. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 79 . – No toda la memoria puede ser liberada cuando el usuario termina con ella. una caché  que presenta los siguientes problemas: – La unidad de reserva de espacio no es constante. • Posibles síntomas de problemas de ajuste de la Shared Pool: – Contención en los latches “%library cache%” (V$LATCH). RedoBuffer. LibraryCache. Son puntos potenciales de contención. “parse count%” (V$SYSSTAT). ya que se  trata de una caché que pretende maximizar la compartición. – Contención en el latch “%shared pool%” (V$LATCH). – Muchas recargas (reloads) en V$LIBRARYCACHE. – Altos tiempos de CPU para compilar. Nota: los latches son microbloqueos necesarios para proteger las operaciones en la SGA  (SharedPool. etc). “parse time cpu” (V$SYSSTAT). – Muchas llamadas de compilación. debidos a la fragmentación.AJUSTE DE LA SHARED­POOL INTRODUCCION • Oracle guarda las sentencias SQL y los paquetes en la Shared­pool. variando desde unos cuantos bytes  hasta muchos Kb.

AJUSTE DE LA SHARED­POOL SENTENCIAS SQL • La  ejecución  de  una  sentencia  SQL  tiene  varias  fases:  análisis  sintáctico  y  semántico (compilación). y además: – – – – Los nombres de objetos deben apuntar a los mismo objetos reales. Es  costoso en términos de CPU y latches. hay que distinguir entre “hard” y “soft” parse: – Hard Parse: la sentencia SQL no existe en la SharedPool (Library Cache). tipos y longitudes de las variables bind deben ser los mismos. El modo del optimizador (optimizer goal) debe ser el mismo. Al compilar una sentencia SQL. Dos sentencias SQL son iguales si tienen el mismo texto (incluyendo espacios en  blanco y mayúsculas/minúsculas). y cálculo del plan de ejecución: – En la “library cache” se guardan las sentecias SQL ya compiladas. – Soft  Parse:  la  sentencia  SQL  ya  existe  en  la  SharedPool  y  puede  usar  una  versión de la misma. El entorno NLS (idioma y país) debe ser el mismo. – En la “sql area” se guardan los planes de ejecución de cada una de ellas. Los nombres. • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 80 .

  No  usar  cuando  BD  tiene  mucha carga. Usar  DBMS_SHARED_POOL. el pinhitratio >= 95% (V$LIBRARYCACHE) y lo más cercano  a 1 (100%). puede significar que sobra. No descarga paquetes “fijados”.STANDARD). ni sentencias ya compiladas de sesiones en curso.sql)  para  fijar  paquetes  muy  usados en la SharedPool (como SYS.AJUSTE DE LA SHARED­POOL GENERALIDADES • Que siempre haya espacio libre en la SharedPool. Nota: en DSS es mejor darle mucha información al CBO q compartir el código. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 81 . En la row cache (V$ROWCACHE) el ratio getmisses/gets <=15%. Reloads debe ser casi 0. POOL        NAME                            BYTES ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­ shared pool free memory                    693036 • • • • • En la library cache. Las aplicaciones OLTP deben usar “bind variables” (no para DSS). Haciendo “flush” se puede eliminar la fragmentación (ora­4031): alter system flush shared_pool. Nota:  puede  bajar  rendimiento  hasta  que  objetos  vuelven  a  la  caché.KEEP  (dbmspool. y  que haya poco o nada no supone un problema si el rendimiento es bueno: SELECT * FROM V$SGASTAT WHERE NAME = 'free memory' AND POOL = 'shared pool'.

– RELOADS (recompilaciones) – Cada petición de metadatos (PIN) que no los  encuentra  en  memoria  pq  los  ha  sacado  el  algoritmo  LRU  (ejecuciones  que  requieren recompilar sentencia). Para  hacer  que  RELOADS  sea  casi  0. – PINS (ejecuciones) – Cada petición de metadatos de un SQL (¿está el SQL  ya compilado?. Si  RELOADS  es  casi  0  y  siempre  tenemos  una  cantidad  significativa  de  la  SharedPool libre. TABLE/PROCEDURE. BODY y TRIGGER. subiremos también open_cursors. bajaremos shared_pool_size. Debe ser casi 0. para aprovechar dicho incremento. • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 82 .AJUSTE DE LA SHARED­POOL LIBRARY CACHE • V$LIBRARYCACHE. si lo está se ejecuta). – GETS (peticiones) – Cada petición de ejecutar una sentencia SQL (¿está el  SQL en memoria?). PINHITRATIO debe ser casi 1.  podemos  subir  shared_pool_size. Los NAMESPACE que se corresponden con sentencias SQL y PL/SQL son: SQL  AREA.  pero  además. Estadísticas de la Library Caché.

982133497 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 Debemos procurar que ratios >= 85%. Podemos ver el ratio general con: SELECT parameter. 100*sum(gets ­ getmisses) / sum(gets) pct_succ_gets      . AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 83 . sum(getmisses)      .AJUSTE DE LA SHARED­POOL ROW CACHE • V$ROWCACHE. MODIFICATIONS: actualizaciones de la caché. del tipo en cuestión.. GETMISSES: peticiones fallidas que generan E/S.. PARAMETER            SUM(GETS) SUM(GETMISSES) PCT_SUCC_GETS    UPDATES ­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­­­­­ ­­­­­­­­­­­­­ ­­­­­­­­­­ dc_object_ids            16942            537    96. – – – – PARAMETER: tipo de petición.1781258        414 .  ROWCACHE ­­­­­­­­­­ .8303624        173 dc_objects                7534            966    87. sum(gets). GETS: peticiones a la caché. sum(modifications) updates   FROM V$ROWCACHE WHERE gets > 0 GROUP BY parameter.  • •   SELECT (SUM(GETS ­ GETMISSES ­ FIXED)) / SUM(GETS) "ROWCACHE" FROM V$ROWCACHE. Estadísticas de la Row Caché (Diccionario de Datos).

ESTD_LC_TIME_SAVED_FACTOR PARSE_SAVED_FACTOR  from v$shared_pool_advice. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 84 .0194 • • • • V$SGASTAT. índices. sinónimos.  incluyendo  paquetes.  funciones. El uso de esta vista consume  muchos latches (V$SQL no). incluyendo el  texto inicial (1000 caracteres) de cada sentencia. secuencias. en varias líneas (filas). etc. vistas. select SHARED_POOL_SIZE_FOR_ESTIMATE SIZE_ESTIMATE. Estadísticas sobre todos los cursores compartidos.9806             8           1                  1            16           2             1. tablas. Texto completo de las sentencias. V$SQLAREA. V$SQLTEXT.5              . SHARED_POOL_SIZE_FACTOR SIZE_FACTOR. triggers. no BASIC).AJUSTE DE LA SHARED­POOL RESTO DE VISTAS DINAMICAS • En V$SHARED_POOL_ADVICE podemos ver si nos interesa redimensionar la  SharedPool (el parámetro STATISTICS_LEVEL debe valer ALL o TYPICAL. Detalle de cada una de las partes de la SharedPool.  procedimientos. SIZE_ESTIMATE SIZE_FACTOR PARSE_SAVED_FACTOR ­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­             4          . V$DB_OBJECT_CACHE.  Objetos  en  caché.

SELECT substr(sql_text. Luego veríamos si  es posible convertirlas en una o en unas pocas. cuyos 40 primeros caracteres son iguales en muchos casos (>30). count(*).40) "SQL".  Oracle  determina  qué  literales  puede  sustituir  por  variables  bind  sin  afectar  el  plan  de  ejecución.40) HAVING count(*) > 30 ORDER BY 2. sum(executions) "TotExecs"     FROM v$sqlarea    WHERE executions < 5    GROUP BY substr(sql_text.  AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 85 . • • Desde  9i.  comprobar  %  de  uso). Detectar sentencias similares que usan literales (V$SQLAREA): Nota:  los  valores  5.  Si  afectase  al  plan  de  ejecución  no  se  hace  el  cambio  (si  se  usa  FORCE sí).1.AJUSTE DE LA SHARED­POOL COMPARTIR CODIGO SQL • • Nos fijaremos el objetivo “compilar una vez y ejecutar muchas”.  Empezar  con  SESSION_CACHED_CURSORS=50  (valor  alto  puede  provocar  ora­4031.  Util  con  Oracle  Forms  cuando  los  forms se abren y cierran con frecuencia.1. Caché privada sesión (SharedPool): al compilar una sentencia primero se busca  en  ella.  40  y  30  son  ejemplo  para  detectar  sentencias  que  se  ejecutan  poco  (<5).  con  CURSOR_SHARING=SIMILAR  (antes  sólo  FORCE).

Para detectar el proceso en cuestión (sólo saldrá algo si lo pillamos en el momento): select a.name = 'library cache%'.pid from v$latch a .laddr and a. y por tanto no muestran problemas “intermitentes”.addr=b.  NAME                                                  GETS     MISSES     SLEEPS ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­ ­­­­­­­­­­ library cache                                     97155739      42902      12272 library cache load lock                              11705          0          0 “misses”  son  fallos  al  intentar  coger  un  “latch”. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 86 . select name.  y  “sleeps”  son  aquellos  fallos  que  provocan  que  la  sesión  correspondiente se ponga a “dormir” (lo cual implica una espera).AJUSTE DE LA SHARED POOL LATCHES DE LA LIBRARY CACHE Si  alguno  de  los  latches  está  provocando  la  mayoría  de  “sleeps”. V$latchholder b  where a.gets.sleeps from v$latch  where name like 'library%'.misses. Hay que tener en cuenta que estos datos se acumulan desde el arranque  de la BD.  entonces  hay  un  problema.name.

p2 = l.AJUSTE DE LA SHARED POOL ESPERAS POR LATCHES Consultando  V$SESSION_WAIT  durante  un  periodo  de  “lentitud”. v$latch l  where w. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 87 .wait_time = 0 and w. con qué “latch” concreto.  se  puede  determinar si hay un problema con “latches” y.event = 'latch free' and         w. en tal caso. select count(*) number_of_waiters    from v$session_wait w.name like 'library%'.  También  es  interesante  mirar  sólo  en  v$session_wait  para  ver  si  hay  alguna  otra  causa de “lentitud”.  Si hay más de 3 ó 4 procesos esperando . select * from v$session_wait  where event != 'rdbms ipc message' and        event not like '%Net%' and sid > 5. puede haber un problema.latch# and l.

  de  modo  que  si  posteriormente son  accedidos tendrán que volver a recuperarse del disco.  Oracle  moverá  parte  de  sus  bloques  a  disco  (usa  algoritmo  LRU  sobre  la  lista.  Se  recomienda  que  sea  >80%  para  aplicaciones  OLTP.  de  bloques  no  “dirty”). pero esto no asegura un buen rendimiento (tb es muy importante el uso  de índices selectivos).  El  proceso  DBWR  es  el  responsable  de  llevar  los  bloques  “dirty”  a  disco. Podemos  calcular  el  ratio  de  eficiencia  (hit  ratio)  de  la  caché  de  datos  consultando  V$SYSSTAT.AJUSTE DE LA BUFFER CACHE GENERALIDADES • • • • • Oracle  guarda copias  de  los bloques de  datos en  la “buffer caché” (caché de  datos).  o  listas. • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 88 . Cuando  la  caché  se  llena. En aplicaciones DSS (datawarehouse) se pueden tener ratios mucho menores.  Cualquier sesión puede leer los bloques de la caché.  El latch “cache buffers lru chain” serializa operaciones sobre la(s) lista(s) LRU. Puede haber copias de diferentes puntos del tiempo y también bloques  “dirty” (modificados pero que no se han llevado a disco).

AJUSTE DE LA BUFFER CACHE HIT RATIO
• Consultando V$SYSSTAT:
select 100*(1 ­ (f1 ­ f2 ­ f3)/(r1 + r2 ­ f2 ­f3)) HitRatio from (select value f1 from v$sysstat where name='physical reads'),  (select value f2 from v$sysstat where name='physical reads direct'),  (select value f3 from v$sysstat where name='physical reads direct (lob)'),  (select value r1 from v$sysstat where name='consistent gets'),  (select value r2 from v$sysstat where name='db block gets');

Si  usamos  varias  cachés  V$BUFFER_POOL_STATISTICS:

(keep, 

recycle, 

etc), 

partir 

de 

Si  activamos  DB_CACHE_ADVICE,  podremos  consultar  V$DB_CACHE_ADVICE posibles estimaciones para la “buffer caché”.
select name,size_for_estimate,size_factor,ESTD_PHYSICAL_READ_FACTOR    from v$db_cache_advice;
NAME                 SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR ­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­ DEFAULT                              4           1                         1 DEFAULT                              8           2                     .3228

SELECT name,         100*(1­(physical_reads / (consistent_gets + db_block_gets))) HIT_RATIO   FROM V$BUFFER_POOL_STATISTICS  WHERE ( consistent_gets + db_block_gets ) !=0;

en 

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA

89

AJUSTE DE LA BUFFER CACHE OBJETIVOS
• Hay que evitar lo siguiente:
– Básicamente  las  lecturas  innecesarias,  pues  llevan  bloques  a  la  caché  y,  por  tanto,  provocan la salida de otros (que luego tendrán q volver a leerse de disco). Cuidado con  los índices poco o nada selectivos y los “full scan” de tablas. – Contención en el latch 'cache buffers lru chain' (V$LATCH).  – Mucho  tiempo  empleado  en  la  espera  "write  complete  waits"  (V$BUFFER_POOL_STATISTICS). – Mucho  tiempo  empleado  en  la  espera  "free  buffer  waits"  (V$BUFFER_POOL_STATISTICS).

Factores que puede mejorar el rendimiento del DBWR: – Atributos de los discos físicos (stripe size, velocidad, etc). – Raw devices vs File Systems. – Distribuir las escrituras sobre más discos/ficheros. – Usar  E/S  asíncrona  cuando  esté  disponible.  Además,  si  es  necesario  arrancar varios procesos DBWR con DB_WRITER_PROCESSES (al menos  uno para cada 8 cpus o grupo de cpus). – Si no hay E/S asíncrona, paralelizar E/S del DBWR con DBWR_IO_SLAVES. – Usar las diferentes cachés (keep, recycle, etc).
AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

90

AJUSTE DEL REDO LOG BUFFER GENERALIDADES
• La Caché de Redo (Redo Log Buffer) es un buffer circular en la SGA, que guarda  información  (redo  entries)  sobre  todos  los  cambios  hechos  en  la  BD,  que  se  utilizará  sólo  para  recuperar  la  BD,  si  es  necesario.  Las  “redo  entries”  van  ocupando espacio contiguo, de forma secuencial, en la Caché de Redo. El LGWR es el encargado de escribir las “redo entries” de la cache de redo, en el  fichero  (o  grupo)  redo  log  activo.  Una  vez  hecho  ésto,  el  proceso  de  usuario  puede reutilizar dichas entradas.  Hay  determinadas  operaciones  en  las  que  resulta  interesante  “desactivar”  el  redo, ya que se pueden reconstruir fácilmente; como son crear un  índice o crear  una tabla “as select”. La opción a usar en estos casos es NOLOGGIN. Dimensionar la Caché de Redo (log_buffer) por encima de 3M, no sirve de nada;  ya que el LGWR vuelca la caché a disco cuando ésta se llena 1/3 ó máximo 1M. El tamaño óptimo se puede sacar de la columna OPTIMAL_LOGFILE_SIZE de la  vista V$INSTANCE_RECOVERY.

• • • •

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008

AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA

91

 Se refiere a la estadística  “redo log space requests" de la vista V$SYSSTAT. • Contención en peticiones de espacio de redo en disco.  pq se  ha  llenado el  fichero  redolog. immediate_gets. 'redo copy').  habrá  que  comprobar  checkpoints  y  log_switchs. gets.  Se  debe  hacer  q  los  checkpoints coincidan con los log switchs (cada 15­30 minutos aprox. y CPUs > 1. que refleja el nº de esperas al  escribir el  redo  a  disco. immediate_misses   FROM v$latch  WHERE name in ('redo allocation'. Si el ratio de MISSES/GETS  o el de  IMMEDIATE_MISSES/(IMMEDIATE_GETS+IMMEDIATE_MISSES)  >  1%  es  porque hay contención: SELECT name.AJUSTE DEL REDO LOG BUFFER DETECTAR PROBLEMAS • Contención en latches (V$LATCH) de redo. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 92 . reduciremos uso de redo (NOLOGIN) o subiremos  el  tamaño  de  la  Caché  de  Redo  (log_buffer).  dicho  nº  va  incrementándose  continuamente.  Si es en “redo copy”.  Ese  valor debe ser  (casi)  cero. se puede subir _log_simultaneous_copies (oculto). Si hay contención en “redo allocation”.).  Si  CPUs>16  se  puede  subir  LOG_PARALLELISM (de 2 a 8). misses.  Si.  por  el  contrario.

En  los  segmentos  de  rollback  (RS)  se  guardan  las  imágenes  de  los  datos. pues  hará q el RS se extienda.  puede  provocar  q  un  RS  se  extienda  si  dicha extensión se necesita más adelante.AJUSTE DEL ROLLBACK GENERALIDADES • • Si  usamos  undo  automático  (>=9i).  Oracle  va  asignando los RS mediante “round robin”.  y  para  mantener  la  consistencia  en  lectura.  Cada TR sólo puede usar un RS para almacenar sus registros de undo. Varias TR pueden escribir en la misma extensión.  reservará una nueva y la insertará en el anillo (reduce el rendimiento).  Una  TR  q  sólo  modifica  1  byte  durante  largo  tiempo. debemos asegurarnos de q la cabeza no alcance a la cola muy rápido. Las  extensiones  de  un  RS  se  usarán  en  orden. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA • • • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 93 . La columna SSOLDERRCNT muestra los errores ORA­1555. Para cada RS.  de  forma  que  la  “cabeza”  del  RS  nunca  machacará una extensión ocupada por la “cola” del mismo. Un  RS  se  organiza  en  forma  de  anillo.  podemos  consultar  V$UNDOSTAT:  una  fila  cada 10 minutos.  por  si  es necesario deshacer  las transacciones  (TR)  en  cuestión.  anteriores  a  las  actualizaciones. Son  importantes  tanto  el  tamaño  como  la  duración  de  una  TR.  Si  no  puede  usar  la  siguiente.

 COUNT FROM V$WAITSTAT   WHERE CLASS like '%undo%'.  Si  no  hay  updates  a  la  vez  que  “grandes selects”. no hay ora­1555. Para prevenir “ORA­1555 Snapshot too old” (lo provocan las grandes consultas). SELECT CLASS.  Nos  debemos fijar en la actividad “normal” de la BD para ajustar.   Si hay en “undo header”. además.AJUSTE DEL ROLLBACK OPTIMIZACION • • • • El  tamaño  de  los  RS  depende  directamente  de  la  actividad  de  las  TR. se pueda atender a la transacción más grande. Fijar  “optimal”  de  modo  q  el  90%  de  las  transacciones  quepan  en  un  RS  sin  extenderse. es q no hay bastantes RS (crear más). Comprobar la contención en RS consultando V$WAITSTAT. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 94 . y que las  transacciones  sean  lo  más  cortas  posibles.  Una  vez  fijado  “optimal”. Calcular  un  segmento  de  rollback  por  cada  4  transacciones  concurrentes.  dejar  espacio  libre  en  el  tablespace  para  que.  cuantos más RS mejor (y no sólo más grandes) y del mismo tamaño.  con  extensiones del mismo tamaño (un mínimo de 20 por RS).

Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 95 . pero  no se liberan. Un mismo segmento de sort puede ser compartido por varias ordenaciones. llamada Sort Extent Pool. La  primera  ordenación  crea  el  segmento  (si  no  existía)  y  las  demás  añadirán  extensiones si lo necesitan. las extensiones se marcan como libres. fuera de la Shared Pool.  sincronizada  usando  el  latch  “sort  extent  pool”  (V$LATCH).AJUSTE DE SEGMENTOS DE SORT GENERALIDADES • • • • Cuando  ocurre  una  ordenación.  subir el tamaño de la extensión por defecto del tablespace. Finalizada la ordenación. Se utiliza una zona de la SGA.  Si  tiene  contención.  Oracle  reserva  tantas  extensiones  como  necesite.

  usando el  parámetro  PGA_AGGREGATE_TARGET.  de  forma  que una mayor cantidad de ordenaciones se hagan en memoria.AJUSTE DE SEGMENTOS DE SORT OPTIMIZACION • • • • Si hay contención en el latch “sort extent pool” (V$LATCH).  también  se  producen  esperas  pq  hay  muchas  ordenaciones  concurrentes. Si  además. me  olvido  de  sort_area_size  (sesiones  con  servidores  dedicados). añadiremos más  espacio al tablespace. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 96 . Podemos monitorizar los segmentos de sort con: – V$SORT_SEGMENT muestra los segmentos temporales.  se  debe  incrementar  el  parámetro  SORT_AREA_SIZE. es  posible q necesitemos un tablespace dedicado para ellas (sólo para las grandes). – V$SORT_USAGE muestra el uso actual de los segmentos temporales. subiremos el tamaño  de la extensión por defecto del tablespace. Si las columnas  ADDED_EXTENTS y FREED_EXTENTS muestran mucha actividad. Desde  Oracle9i. Si MAX_SORT_SIZE indica ordenaciones de gran tamaño. El tamaño de la extensión debe ser igual a SORT_AREA_SIZE (o múltiplo).  PGA_AGGREGATE_TARGET indica el tamaño máximo que sumarán las PGAs  (mínimo 10M).

Indicaciones de ajuste: – El proceso CKPT puede mejorar significativamente el rendimiento.AJUSTE DE LOS CHECKPOINTS • • Un checkpoint es el evento que sincroniza los bloques de datos en memoria con  los ficheros de datos en disco (los escribe el DBWR).log  los  tiempos  de  comienzo  y  fin  de  los  checkpoints. – Asignando  el  parámetro  LOG_CHECKPOINTS_TO_ALERT  a  TRUE  podremos  ver  en  el  fichero  alert. – Lo ideal es que los checkpoints sólo sucedan cuando se hace “log switch”: • log_checkpoint_interval=0 • log_checkpoint_timeout=0. • FAST_START_MTTR_TARGET=0 (desactiva “fast recovery instance”). los checkpoints ocurrirán cuando Oracle haga un “log switch”. – Si  el  valor  de  LOG_CHECKPOINT_INTERVAL  es  mayor  que  el  tamaño  del  fichero redolog. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 97 .

 además. estamos usando el optimizador por costes (CBO): • Para el ajuste de sentencias SQL utilizaremos las siguientes herramientas: – AUTOTRACE de Sql*Plus: – TKPROF sobre un fichero de traza: – ¿Están calculadas las estadísticas para las tablas y los índices en cuestión? ANALYZE TABLE | INDEX nombre COMPUTE | ESTIMATE STATISTICS. $ tkprof tracefile outputfile [explain=usu/pw] [sys=no] AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 98 . probar RULE... ¿se generaron con “compute” o con “estimate”? SQL> SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] SQL> alter session set sql_trace=true. . – Si hay estadísticas. debemos comprobar: – El valor de OPTIMIZER_MODE. • Si. SQL> alter session set sql_trace=false. Ej: si CHOOSE.AJUSTE DE LAS CONSULTAS SQL • Si observamos que nuestras consultas SQL van “lentas”. – ¿Están los índices de las tablas afectadas en estado “valid”? – ¿Hay alguna otra consulta SQL “pesada” en ejecución? ALTER SYSTEM SET OPTIMIZER_MODE=RULE | FIRST_ROWS | ALL_ROWS | CHOOSE. SQL> Select . SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='INDEX' AND STATUS!='VALID'. Para tablas grandes “Estimate 30%” suele ser casi igual a “compute”.

 Número máximo de procesos en la instancia.1*PROCESSES. la carga debe estar balanceada. Probar con MTS si se degrada el uso de CPU por muchas sesiones concurrentes  (MTS es mejor si hay muchas conexiones a la BD). Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 99 . – SESSIONS. Si hay varias CPUs. Por defecto 1.AJUSTE DE LA CPU • • • • • Porcentaje máximo de ocupación de CPU = 90%. sin embargo si usamos MTS habrá que  subirlo. Porcentaje máximo de procesamiento OS/usuario = 40/60%. Parámetros que limitan el número de procesos y de sesiones: – PROCESSES.

 Los datos recopilados por statspack se  guardarán en tablas. STATSPACK trabaja con el concepto “snapshot” para identificar una colección de  datos  recopilados  en  un  momento  del  tiempo.  Además. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 100 .  a  los  que  asocia  un  identificador  único. La  documentación  de  la  herramienta  están  en  $ORACLE_HOME/rdbms/admin/spdoc. STATSPACK  es  una  utilidad  para  recoger  estadísticas  que  permiten  detectar  problemas  de  rendimiento.  UTLBSTAT/UTLESTAT.  Es  necesario  recopilar  datos  en  forma  de  snapshots  antes  de  poder obtener un informe de rendimiento. PERFSTAT.  El  script  de  instalación  de  la  herramienta crea un usuario. Se  trata  de  un  conjunto  de  scripts  SQL  y  PL/SQL. con la introducción del AWR no es necesario usar STATSPACK.UTILIDAD “STATSPACK” • • • • • Desde 10g.  snap_id.txt.  mejora  la  utilidad  que  había  anteriormente.

  spcpkg.sql.lis. que nos pedirá la clave para  el  nuevo  usuario. spcpkg.lis.lis. primero desinstalaremos con  el script spdrop.  spctab. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 101 .  así  como  el  tablespace  por  defecto  y  el  tablespace  temporal.  de  forma  automática.  llama  a  otros  tres:  spcusr.INSTALAR “STATSPACK” • • Necesita  un  tablespace  con  al  menos  100Mb.sql.sql.  a  ser  posible  “manejado  localmente”. Debemos asegurarnos que el tablespace  por  defecto  de  este  usuario  es  el  que  hemos  creado. spctab.  Este  script.sql.  y  lanzar  el  script $ORACLE_HOME/rdbms/admin/spcreate.  Debemos  comprobar  si  se  producen  errores  en  los  ficheros  spcusr. Si hay errores y tenemos que repetir la instalación. Para  la  instalación  debemos  conectarnos  a  la  BD  como  SYSDBA.  y  tener  cuidado  con  su  tablespace temporal por defecto (no sería mala idea asignarle uno especial).sql. La  instalación  crea  un  usuario  PERFSTAT  que  será  el  propietario  de  todos  los  objetos y el código pl/sql que se cree.

  Este  primer  snapshot  nos servirá de base comparativa para los próximos snapshots que tomemos. • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 102 . Al  crear  un  snapshot. podemos hacerlo con sptrunc. e  incluso  una  sesión  sobre  la  que  recabar  estadísticas  adicionales  (i_session_id).  puede ser interesante hacer un export previo del usuario PERFSTAT).sql.RECOGIENDO DATOS CON  “STATSPACK” • La  forma  más  sencilla  de  crear  un  snapshot  es  conectando  como  usuario  PERFSTAT y ejecutando el procedimiento STATSPACK. por ejemplo. indicar el nivel de detalle de las estadísticas (i_snap_level).  Si  queremos  borrar  todos los snapshots.SNAP.  Para establecer un snapshot inicial (baseline) se recomienda i_snap_level=10. Previamente es  conveniente  activar  el  parámetro  time_statistics  (TRUE). que lo borrará todo.SNAP.  con  STATSPACK. Podemos  borrar  un  rango  de  snapshots  con  sppurge.  se  pueden  indicar  parámetros  para.sql (¡ojo!.

sql (desde el usuario PERFSTAT). • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 103 .  podemos  generar  un  informe  sobre  ella  con  el  script sprepsql. que nos pedirá el intervalo de snapshots y el hash_value de la  sentencia.OBTENIENDO INFORMES CON  “STATSPACK” • Podemos  obtener  un  informe  sobre  el  rendimiento  general  de  la  instancia  con  spreport. Nos pedirá el intervalo de snapshots  (inicial y final) y el nombre del fichero de salida. Si  localizamos  una  sentencia  SQL  por  su  “hash_value”  (V$SQLAREA.HASH_VALUE).sql.

sql  ­>  Crea el usuario PERFSTAT spctab.sql ­> Genera un informe general del rendimiento de la instancia sprepins.sql ­> Genera un informe para la sentencia SQL cuyo Hash Value se indique spauto.RESUMEN DE SCRIPTS  “STATSPACK” Instalación (como usuario SYSDBA): spcreate.sql ­> Instala STATSPACK ejecutando a su vez los scripts: spcusr.sql ­>  Crea el paquete statspack spdtab.sql ­> Permite borrar un rango de snapshots sptrunc. borrando todos los snapshots spuexp.sql ­> Desinstala STATSPACK ejecutando a su vez los scripts: Informes (como usuario PERFSTAT): Mantenimiento (como usuario PERFSTAT): spreport.par ­> Es un fichero de parámetros para exportar el usuario PERFSTAT 104 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA .sql ­> Permite automatizar la recolección de estadísticas (usando dbms_job) sppurge.sql ­>  Borra el usuario PERFSTAT spdrop.sql ­> Genera un informe para la BD y la instancia indicados sprepsql.sql  ­>  Crea las tablas spcpkg.sql ­>  Borra las tablas spdusr.sql ­> Vacía (con truncate) todas las tablas.

V$LATCH: latches. V$SESSION_EVENT: estadísticas de eventos de espera por sesión. Obtener IP: Select SYS_CONTEXT('USERENV'. V$ROLLSTAT: estadísticas de uso de los segmentos de rollback. V$SYSTEM_EVENT: estadísticas de eventos de espera a nivel de sistema. V$SGASTAT: estado de uso de las diferentes partes de la SGA. V$PGASTAT: estado de la PGA.VISTAS DEL DD • • • • • • • • • • • • • • • • • • • V$SYSSTAT: estadísticas generales del sistema. V$SESSTAT: estadísticas generales por sesión. V$SESSION_WAIT: sesiones que están en espera actualmente. V$FILESTAT: estadísticas de E/S a nivel de fichero. V$SESS_IO: estadísticas de E/S a nivel de sesión. V$BUFFER_POOL_STATISTICS: estadísticas de la caché de datos. V$LIBRARYCACHE: ratios de la Library Caché (Sentencias SQL y PL/SQL). V$ROWCACHE: ratios de la Row Caché (Diccionario de Datos). V$UNDOSTAT: estadísticas de uso de los segmentos de rollback. V$SORT_SEGMENT: estadísticas de uso de los segmentos temporales. V$DB_OBJECT_CACHE: objetos que hay en la Library Caché. V$SORT_USAGE: áreas de sort actualmente en uso.'IP_ADDRESS') FROM DUAL. AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 105 .

 Comprueba el parámetro TIMED_STATISTICS. Comparar el uso de CPU para “SQL del sistema” (acceso  al DD) sobre el total. 5.PRACTICAS TEMA 5 • • • • • • • 5. Comprobar el pinhitratio de la Library Caché.  Comprueba  el  tamaño medio de la PGA de cada sesión. 5. 5. 5.  Revisa  las  estadísticas  del  sistema  más  significativas.7. y el valor de open_cursors. 5. Revisa las lecturas lógicas y físicas y  calcula el ratio de E/S.3.1. asi como los reloads. Comprobar  evento “latch free” por sesiones. Comprobar si el sistema recomienda ampliar la SharedPool.5. Ver el ratio de la Row Cache.  Ver  el  eatado  de  ocupación  de  las  partes  más  significativas  de  la  Shared  Pool. Comprobar la contención en latches de la Shared Pool y Library Cache.4.6. 5.2. Verificar   el espacio libre de la Shared Pool. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 106 . Revisar eventos del sistema y comprobar los más significativos.  Comprobar sesiones esperando por el evento  “db file sequential read”.

5.8. 5.10.9. Ver si hay esperas del tipo “write complete waits” o “free buffer waits”.  Consultar  si  Oracle  recomienda  incrementar  la  Caché  de  Datos.  Verificar  el  parámetros  cursor_sharing y session_cached_cursors.11.  Comprobar  si  hay  contención  en  el  latch  “cache  buffers  lru  chain”. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 107 . Comprobar paquetes que se  pueden “fijar” en la SharedPool y hacerlo.  Comprobar  sentencias  que  ocupan  mucha  memoria  (>=10%  de  SharedPool).PRACTICAS TEMA 5 • • • • 5. 5.  Calcular  el  ratio  de  eficiencia  de  la  Caché  de  Datos.  Detectar  sentencias  similares  que  usan  literales.  Comprobar  el  parámetro  db_cache_advice. Instalar el paquete DBMS_SHARED_POOL. Asignar cursor_sharing=similar.

5. 5. Ver si hay contención en los  latches de redo.PRACTICAS TEMA 5 • • • 5.12. Verificar las extensiones  que tiene cada uno.14. así como el espacio total y libre del tablespace que los  contiene. Crear snapshots y generar informe. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 AJUSTE Y MONITORIZACIÓN DE LA  INSTANCIA 108 . Comprobar los segmentos de rollback ONLINE.13. Ver si hay contención en segmentos de rollback. Verificar la estadística “redo log space requests”. Comprobar el tamaño de la Cache de Redo. Instalar la utilidad STATSPACK.

org (Underground Oracle FAQs) otn.com (Web de Werner Puschitz) www.puschitz. Recursos Oracle en Internet.ixora. artículos. etc.oracle.com (Oracle Tecnology Network) otn. foros.com (Gurú de Oracle) – Portal oficial de Oracle.oracle. foros.com (Soporte Técnico Oracle) asktom. – Revista Oracle Magazine. scripts.au (Otro gurú) Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .APENDICE A.oracle. – Soporte técnico para usuarios con contrato de mantenimiento.com/oramag (Oracle Magazine) www. artículos.orafaq.oracle­base.com. Registro gratuito. – Descargas de sw.com (Revista electrónica) www.dbazine. • • • • • • • • • • www.com (Web de Tim Hall) www.com (Web de Oracle) metalink. – Artículos y preguntas a uno de los gurús de Oracle – Artículos muy interesantes sobre Oracle 10g (incluida instalación) – Artículos muy buenos sobre instalación de Oracle sobre Linux – Revista electrónica mensual especializada en Oracle – Para mejorar el rendimiento de Oracle sobre Unix 109 – Sitio no oficial sobre Oracle (FAQs. scripts. documentación.oracle. etc). www.oracle.

 MMON.APENDICE B. etc. – Nuevos 10g: MMAN. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 – Base de datos • Ficheros de datos • Ficheros redo log • Ficheros de control 110 .  PSP0.  Servers. ARCH. MMNL. Dispatchers. Arquitectura Oracle Servidor Oracle – Instancia • Procesos Background – DBWR – LGWR – SMON – PMON – CKPT – Opcionales: RECO. • System Global Area (SGA) – Shared Pool » Library Cache » Dictionary Cache – Database Buffer Cache – Redo Log Buffer – Java Pool y Large Pool.

APENDICE B. Arquitectura Oracle Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 111 .

Estructura Física/Lógica de la BD • Estructura lógica de la BD – Tablespaces • Segmentos – Extensiones » Bloques Oracle • Estructura física de la BD – Ficheros de datos •  Bloques del SO Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 112 .APENDICE C.

APENDICE C. Estructura Física/Lógica de la BD Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 113 .

  Si  no  los  encuentra. 3 1 4 2 4 1 3 114 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 .APENDICE D. Si  no  la  encuentra. El  proceso  servidor  busca  la  sentencia SQL en la Shared Pool.  accede  directamente a los ficheros de datos. 4. Conexión a la BD y consulta 1. El  proceso  servidor  accede  a  los  datos  en  la  Database  Buffer  Cache.  la  compila  y  la  guarda en la Shared Pool. 3. 2. El  proceso  de  usuario  envía  la  sentencia SQL al proceso servidor. El  proceso  servidor  devuelve  los  datos  al  proceso  de  usuario  q  inició  la conexión.  llevando  los  datos  a  la  Database  Buffer Cache.

  7. Se  guarda  una  copia  del  dato  (antes  del  cambio) en un segmento de Rollback (por si  se deshace la transacción).  cuando  se  hace commit o cada 3 segundos). 5. El  proceso  servidor  devuelve  el  número  de  filas actualizadas al proceso de usuario. 6. 2 (compilación) y 3 (acceso a  los datos) vistas en el proceso de consulta. 4 3 1 7 2 7 5 6 1 5 3 6 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 115 . Se  modifican  los  bloques  de  datos  en  la  Database  Buffer  Caché. 4. Actualización de datos En primer lugar se repiten las fases 1 (envío de  la sentencia). Se  guardan en la caché de Redo  las "redo  entries" (vector de cambios de cada bloque  modificado)  necesarias  para  registrar  el  cambio q se va a hacer (el LGWR vuelca el  buffer  al  fichero  redo  log  activo.  El  DBWR  (de  forma  asíncrona)  los  llevara  a  los  ficheros  de datos cuando suceda un checkpoint.APENDICE E.

 ahora es “connect / as sysdba” • spfile  (fichero  de  parámetros  binario.) Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 116 . • SGA dinámica: sga_max_size.APENDICE F. Novedades Oracle 9i • undo tablespace y gestión automática de undo • database default temporary tablespace • drop tablespace INCLUDING CONTENTS AND DATAFILES. db_cache_size • db_nk_cache_size (cachés con tamaño de bloque no estándard) • desaparece “connect internal”. segment space management auto.  mantenido  con  “alter  system  set .) • compresión de los segmentos de datos (create table ...... compress.”) • OMF • tablespaces  con  gestión  automática  de  segmentos  (create  tablespace ..

create BIGFILE tablespace tsbig1 .  Script $ORACLE_HOME/rdbms/admin/addmrpt.”) "create  temporary  tablespace  ts1  .  FLASHBACK  TABLE  nombreTablaBorrada  TO  BEFORE  DROP. (sólo montada) ALTER DATABASE DEFAULT TABLESPACE nombre.sql.. (DBA_RECYCLEBIN.  PURGE  TABLE  NombreTabla..  DBA_OUTSTANDING_ALERTS.APENDICE G.  DROP DATABASE.  ALTER SYSTEM FLUSH BUFFER_CACHE. Data Pump (exp/imp todavía existen): expdp/impdp muy eficiente para grandes cantidades  de datos Flashback  Database  (db_recovery_file_dest.  ALTER  TABLESPACE  nombre  FLASHBACK  ON..  db_recovery_file_dest_size.. ALTER SYSTEM QUIESCE RESTRICTED | UNQUIESCE (tb SUSPEND y RESUME)..  db_flashback_retention_size). (hasta 8Eb) SGA_TARGET (ASMM: gestión automática del tamaño de las partes de la SGA) alter table t1 SHRINK SPACE CASCADE.) ADDM.  V$ALERT_TYPES. SHOW RECYCLEBIN. 117 • • • • • • • Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 ."  y  "alter  tablespace  t2  TABLESPACE GROUP g1.. size 50G. recyclebin=on.  TABLESPACE  GROUP  g1.  FLASHBACK  TABLE  nombre  TO  SCN  numero.  DBA_ALERT_HISTORY. FLASHBACK TABLE nombre TO TIMESTAMP '2006­03­03 12:05:00'. Automatic Storage Management (ASM). Muy  útil para auditoría: ALTER DATABASE FLASHBACK on. DROP TABLE nombre PURGE. (antes “alter table t1 enable row movement. Novedades Oracle 10g • • • • • • • • Tablespace SYSAUX (permite dejar en el SYSTEM sólo el DD) alter tablespace nombre1 RENAME TO nombre2.

 es el  WE8ISO8859P15 (que incluye el símbolo del euro).APENDICE H.WE8ISO8859P15 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 118 .  como el país y el idioma: – export NLS_LANG=SPANISH_SPAIN. permite indicar (desde la aplicación  cliente que accede a Oracle) tanto el juego de caracteres a utilizar.  La variable de entorno NLS_LANG. SOPORTE DE GLOBALIZACIÓN • Conjunto de caracteres para la base de datos. NLS_SESSION_PARAMETERS. • Parámetros NLS.  Variable de entorno NLS_LANG.  • Lenguaje y territorio. – NLS_TERRITORY – NLS_LANGUAGE – NLS_DATE_LANGUAGE • • El conjunto de caracteres para la BD a utilizar en España.

SSXFF AM TZH:TZM NLS_DUAL_CURRENCY              $ NLS_COMP                       BINARY Se pueden cambiar con “ALTER SESSION SET variable=valor.MI.SSXFF AM NLS_TIMESTAMP_FORMAT           DD­MON­RR HH.MI. NLS_SESSION_PARAMETERS Para consultar las variables NLS asociadas a una sesión: SQL> select * from nls_session_parameters.SSXFF AM NLS_TIME_TZ_FORMAT             HH.SSXFF AM TZH:TZM NLS_TIMESTAMP_TZ_FORMAT        DD­MON­RR HH.MI.” Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 119 .MI. PARAMETER                      VALUE ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ NLS_LANGUAGE                   AMERICAN NLS_TERRITORY                  AMERICA NLS_CURRENCY                   $ NLS_ISO_CURRENCY               AMERICA NLS_NUMERIC_CHARACTERS   P      .APENDICE H. NLS_CALENDAR                   GREGORIAN NLS_DATE_FORMAT                DD­MON­RR NLS_DATE_LANGUAGE              AMERICAN NLS_SORT                       BINARY NLS_TIME_FORMAT                HH..

SQL> SELECT SYSDATE FROM DUAL. y el lenguaje  (NLS_LANGUAGE) se refiere al idioma en que nos responde Oracle. SYSDATE ­­­­­­­­ 30/03/05 SQL> ALTER SESSION SET NLS_LANGUAGE=SPANISH.APENDICE H. Sesion modificada. SQL> SELECT SYSDATE FROM DUAL. NLS_TERRITORY Y NLS_LANGUAGE El país (NLS_TERRITORY) lleva asociado un formato de fecha. Session altered. Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 120 . SYSDATE ­­­­­­­­­ 30­MAR­05 SQL> ALTER SESSION SET NLS_TERRITORY=SPAIN.

TO_CHAR(SYS ­­­­­­­­­­­ 20/DIC/2004 SQL> SELECT  TO_CHAR(SYSDATE.APENDICE H. NLS_DATE_LANGUAGE Podemos modificar el idioma de la fecha con NLS_DATE_LANGUAGE: SQL> SELECT TO_CHAR(SYSDATE.'DD/MON/YYYY'. TO_CHAR(SYS ­­­­­­­­­­­ 20/DEC/2004 Administració n de Oracle 10g (Parte 2) © Juan Luis Serradilla Amarilla y Francisco Ferná ndez Martínez  2004 ­ 2008 121 .'NLS_DATE_LANGUAGE=SPANISH') FROM DUAL.  'DD/MON/YYYY'.'NLS_DATE_LANGUAGE=AMERICAN') FROM  DUAL.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->