Conceptos básicos tuning Oracle

1. Top-Down
Oracle, a la hora de optimizar el rendimiento de nuestra base de datos recomienda un orden concreto de los aspectos a optimizar. Por ejemplo ponen el diseño de la base de datos por encima de la optimización del sistema o la instancia. Esta metodología la denominan "Top-Down". Prioridad del área a realizar tuning: * Tuning the Data Design * Tuning the Aplication Design * Tuning Memory Allocation * Tuning I/O and Physical Structure * Tuning Resource Contention * Tuning the underlying Platform(s)

2. Alert log
Los “Alert logs” son registros que contienen la información de “mensajes de errores” obtenidos por la variedad de actividades que se realizan en la base de datos. Estas actividades y registros están almacenados cronológicamente del mas antiguo al más reciente. Este registro se encuentra en el directorio que hayamos fijado en nuestro init.ora bajo el parámetro BACKGROUND_DUMP_DEST. En una arquitectura OFA se recomienda que el directorio donde se encuentren estos archivos sea el siguiente: $ORACLE_BASE/adin/SID/bdump en sistemas UNIX. En sistemas tales como Windows 2000 según este estándar podría encontrarse en %ORACLE_BASE%\admin\SID\bdump El nombre de este alert log será alert_ seguido de la instancia de la base de datos. Una de las cosas que podemos hacer para tener un seguimiento del alert log es mantener en un archivo las últimas 1000 líneas de este registro. Para hacer esto podemos echar mano del comando tail Ejemplo:
cd $ORACLE_BASE/admin/ALUMNOS/bdump tail –1000 alert_alumnos.log > alert_alumnos.log.ultimas mv alert_alumnos.log.ultimas alert_alumnos.log

3. Trace files
Oracle trace files son archivos de texto que contienen información de la sesión para el proceso que han creado. “Trace files” pueden ser generados por procesos background . Muchos de estos “trace files” contienen información sobre el tuning que se le debe hacer a una base de datos.

username.ora bajo el parámetro de BACKGROUND_DUMP_DEST .trc Sistema Windows sidPMON.trc Arc_xxxx.p. $ORACLE_BASE/adin/SID/bdump en sistemas UNIX. para identificar a qué usuario corresponde este trace file debemos de recurrir a dos vistas: V$PROCESS y v$SESSION. Con la siguiente consulta podríamos obtener el usuario cuyo proceso corresponde al 4327 : SQL > SELECT s.ora mediante el parámetro BACKGROUND_DUMP_DEST.spid FROM v$session s.trc sidSMON. no obstante si el administrador de base de datos quiere que este archivo no solo se genere cuando haya un error entonces deberá realizar lo siguiente: .trc Cpt_xxxx.trc sidARC0.trc Dbw0_xxxx.trc Lgwr_xxxx.User trace files Los ficheros “user trace files” se encuentran también en el directorio especificado en el init.trc Smon_xxxx.trc sidCPT.trc . En sistemas tales como Windows 2000 según este estándar podría encontrarse en %ORACLE_BASE%\admin\SID\bdump Ejemplo de trace files para los procesos background: Nombre del proceso PMON SMON DBW0 LGWR CPT ARC0 Sistemas UNIX Pmon_xxxx.trc sidDBW0.trc sidLGWR.trc (sistemas UNIX) ora04327.trc (Windows 2000) .addr AND p.paddr = p. USERNAME SPID ----. En sistemas que sigan el modelo OFA. v$process p WHERE s.---USER1 4282 USER2 5436 USER3 4327 USER4 4678 Activando las trazas de usuario: Cuando ocurre un error.background is null.. el archivo de traza se genera automáticamente.Background Trace Files: Los “trace files” ( ficheros de traza ) generados por los procesos background pueden ser encontrados en el directorio especificado en el init. Este fichero también incorpora en nombre de la instancia en los sistemas UNIX Ejemplo: Siendo alumnos el nombre de la instancia de nuestra base de datos ora_alumnos_4327.

4. Gestionando trace files: Podemos gestionar el tamaño de estos archivos mediante una serie de parámetros en el INIT.set_sql_trace_in_session(10. Este paquete de PL/SQL contiene un procedimiento que nos permite activar el user trace file de algún usuario simplemente sabiendo el sid y el serial ( serial# ) Identificamos el sid y el serial# de un usuario llamado DAVID: SQL> SELECT username.set_sql_trace_in_session(10.Instance-Level Tracing: Si ponemos en init. todos los procesos generarán sus archivos de traza.ora el parámetro SQL_TRACE=TRUE. Utilizamos el procedimiento set_sql_trace_in_session del paquete dbms_system SQL > exec sys.-. serial# FROM v$session WHERE username = ‘DAVID'. El parámetro por defecto para SQL_TRACE es FALSE.2642.dbms_system.ora Parámetro especificado Tamaño máximo para User Trace MAX_DUMP_FILE_SIZE=10000 10000 OS bloques MAX_DUMP_FILE_SIZE=500K 500000 bytes . sid. USERNAME SID SERIAL ----.TRUE). User Level Self-Tracing Un usuario puede activar o desactivar en su propia sesión su trace file utilizando los siguientes comandos de SQL : SQL > ALTER SESSION SET SQL_TRACE=TRUE SQL > ALTER SESSION SET SQL_TRACE=FALSE User Level DBA Tracing También podemos iniciar el user trace file mediante PL/SQL haciendo una llamada al paquete DBMS_SYSTEM.ora . En caso de que queramos para el trace file para el usuario DAVID ejecutaremos lo siguiente: SQL > exec sys. Cómo interpretar User trace file Una vez que estos trace file se han generado hay que aprender a interpretarlos.FALSE).---DAVID 10 2642 Activamos el trace file para la sesión de DAVID usando el paquete DBMS_SYSTEM PL/SQL y los valores para el sid y el serial que hemos obtenido en el punto 1. La sesión de DAVID generará un trace file que estará especificado en el parámetro USER_DUMP_DEST de nuestro init.2642. Se puede interpretar el contenido de un user_trace_file usando la utilidad TKPROF.dbms_system.

Nombre de la vista Descripción de la vista -----------------.username. v$statname n.sid=t. Estas tablas existen en memoria con nombres encriptados como X$KSMPS.n. Muchas de las vistas están disponibles cuando la base de datos está en estado nomount ó mount.-------------------------V$SGASTAT Tamaño de todas las estructuras de memoria V$STATNAME Estadísticas del V$SESSTAT V$SYSSTAT Estadísticas del uso de cpu para todas las sesiones activas V$SESSTAT Estadísticas de las sesiones activas V$SESSION Sesiones activas. Las DBA views sólo están disponibles cuando la base de datos está abierta (open) Hay aproximadamente unas 225 V$.------------------------DBA_TABLES Tablas.value from v$session.MAX_DUMP_FILE_SIZE=10M 10 megabytes MAX_DUMP_FILE_SIZE=unlimited No limits on file size Performance Tuning Views Hay dos tipos de vistas de ORACLE que nos dan información:   Las v$ dynamic performance views Las DBA Data dictionary views Los nombres de las vistas v$ son generalmente singulares de las DBA views que utilizamos con nombres en plural.v$sesstat t where s.name.t. Un ejemplo para esto es V$datafile vs DBA_DATA_FILES.sid . DBA_SEGMENTS Información sobre el espacio consumido en los segmentos de base de datos Ejemplo de consultas (query) para este tipo de vistas V$: SQL > Select s. líneas e información de bloques DBA_INDEXES Índices. nombre e información del tamaño. Ejemplo de v$dynamic performance views. V$WAITSTAT Refleja la contención en términos del número de esperas en cuatro tipos de bloques de rollback Ejemplo de DBA Views Nombre de la vista Descripción de la vista : -----------------. estas vistas están basadas en tablas dinámicas conocidas colectivamente como X$ tablas. líneas e información de bloques DBA_DATA_FILES Ubicación de los datafiles.

statistic# and s. chain_cnt from dba_tables where owner = ‘DAVID' and chain_cnt !=0.statistic#=n. DBA VIEW: SQL > Select table_name. .and t.username ='DAVID'.