Sie sind auf Seite 1von 14

Josue lvarez Moreno

Fernando Pulido Maleno

Anlisis
de
rendimiento
en
10G

Josu lvarez Moreno y Fernando Pulido Maleno


Pg. 1 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

ndice
Objetivos...............................................................................................................................................3
Que son las vistas dinmicas de rendimiento?....................................................................................3
Statspack...............................................................................................................................................5
Que es Statspack?...........................................................................................................................5
Por qu usar Statspack?..................................................................................................................5
Que es una snapshot?.....................................................................................................................5
Funcionamiento general de Statspack..............................................................................................6
Instalando Statspack........................................................................................................................6
Requisitos....................................................................................................................................6
Proceso........................................................................................................................................6
Tomar nuestra primera snapshot......................................................................................................7
Listar todas las snapshots de nuestra base de datos.........................................................................7
Borrar snapshots..............................................................................................................................7
Ajustar el nivel de detalle de las snapshots......................................................................................7
Programar la toma de snapshots......................................................................................................8
Creacin de informes.......................................................................................................................8
Anlisis del informe.........................................................................................................................9
Cabecera......................................................................................................................................9
Perfil de carga...........................................................................................................................10
Porcentaje de eficiencia de la instancia.....................................................................................10
Top 5 eventos............................................................................................................................12
Top de consultas que consumen ms tiempo de CPU..............................................................12
Resumen de estadsticas de E/S para cada tablespace..............................................................13
Pg. 2 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Objetivos
- Conocer las vistas dinmicas que proporcionan informacin sobre el rendimiento de la instancia.
- Instalar y configurar statspack entendiendo la estructura de la aplicacin y los diferentes niveles de
recogida de datos existentes.
- Comprender la informacin ms relevante recogida por statspack de forma que se detecten los
problemas de rendimiento de la instancia, los posibles cuellos de botella de la base de datos y las
sentencias o procedimientos que generan problemas de carga de la base de datos.
- Aprender a redactar una documentacin concisa y til sobre procedimientos de administracin.

Que son las vistas dinmicas de rendimiento?


Proporcionan informacin en tiempo real acerca de las entraas de nuestra base de datos. La
estructura de la base de datos, informacin de rendimiento, parmetros de inicializacin son algunos
ejemplos de los datos que podemos obtener de ellas.
Las vistas proporcionadas por Oracle tienen siempre el prefijo V_$, pertenecen a SYS, y por
defecto slo estn disponibles a SYS y a usuarios con el privilegio SELECT ANY TABLE. Tambin
encontraremos vistas que comienzan por V$, que son sinnimos que apuntan a las anteriores.
Algunas de estas vistas dinmicas son:
V$OPEN_CURSOR
Cursores abiertos durante la sesin en curso.
V$SESSION
Sesiones en ejecucin en esta instancia.
V$SESSION_WAIT
Recursos solicitados por las sesiones.
V$DB_OBJECT_CACHE
Estadsticas a nivel de objeto de la shared pool.
V$FILESTAT
Resumen de la actividad de E/S a nivel de archivo
V$LIBRARYCACHE

Pg. 3 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Resumen de los contenidos de la shared pool a nivel de namespace.


V$LIBRARY_CACHE_MEMORY
Resumen del uso de memoria de la library cache, segn el tipo de objeto.
V$MYSTAT
Informe de uso de recursos para tu sesin.
V$ROLLSTAT
Estado del segmento de rollback
V$ROWCACHE
Actividad del diccionario de datos.
V$SEGSTAT
Estadsticas de segmentos.
V$SESSION_EVENT
Resumen de todos los waits relacionados con esta sesin.
V$SESSTAT
Uso de recursos de la sesin.
V$SQL
Sentencias en ejecucin.
V$SYSSTAT
Uso de recursos de la instancia.
V$SGAINFO
Tamao de todos elementos de la SGA.
V$UNDOSTAT
Histograma de uso de Undo, por intervalos de 10 minutos.
V$PARAMETER y V$SYSTEM_PARAMETER

Pg. 4 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Paramtros de tu sesin e instancia.


V$PROCESS
Procesos de servidor
V$SQL_PLAN
Plan de ejecucin para sentencias ejecutadas recientemente.
V$SQL_PLAN_STATISTICS
Estadsticas de ejecucin de cada operacin en el plan de ejecucin.
V$SQLTEXT
Texto de sentencias SQL en la shared pool
Podramos examinar cada una de estas vistas y anotar sus valores para conseguir informacin sobre
como afectan los cambios de configuracin al rendimiento. Por suerte, Oracle proporciona una serie
de scripts agrupados bajo el nombre de Statspack que se encargarn de hacer la mayor parte del
trabajo sucio en nuestro lugar.

Statspack
Que es Statspack?
Statspack es un conjunto de scripts para medir la productividad de la base de datos. Recopila
informacin de las vistas dinmicas de rendimiento y, comparando diferentes snapshots, genera
informes sobre el rendimiento de nuestra base de datos.

Por qu usar Statspack?


Para poder optimizar el rendimiento de la instacia, es vital saber cual es nuestro nivel actual para
poder comparar en un futuro. Sin un nivel base, es dificl averiguar a que se debe el problema que
afecta a nuestra base de datos.

Que es una snapshot?


El trmino 'snapshot' describe un conjunto de estadsticas tomadas en un momento concreto,
almacenadas con un identificador nico. No confundir con Oracle Snapshot Replication.

Pg. 5 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Funcionamiento general de Statspack.


El proceso de instalacin crea un usuario, de nombre PERFSTAT propietario de todos los objetos
necesarios por este paquete. Despus se le conceden nicamente privilegios de consulta sobre las
vistas dinmicas necesarias para recopilar la informacin.
Una snapshot tiene como identificador nico la combinacin de su snap_id (generada
automticamente en el momento de la creacin de dicha snapshot), el dbid, y el nmero de
instancia.
Una vez hemos tomados varias snapshots, es posible generar un informe de rendimiento,
proporcionando las id de las dos snapshots que queremos comparar.

Instalando Statspack.
Requisitos.
Un tablespace dedicado para almacenar los objetos necesarios. El tamao mnimo necesario
es 250 megabytes, aunque vara de instalacin en instalacin y Oracle no proporciona
ninguna cifra orientativa. Para ser consistentes, Oracle recomienda llamarlo PERFSTAT. Es
importante mantener vigilado el tamao del tablespace para que no se llene.
SQL> CREATE TABLESPACE perfstat
DATAFILE 'C:\app\Usuario\oradata\orcl\perfstat.dbf' SIZE 1000M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K
SEGMENT SPACE MANAGEMENT AUTO
PERMANENT
ONLINE;

Proceso
Nos conectamos como algn usuario con privilegios de SYSDBA
SQL> @?/rdbms/admin/spcreate.sql
SQL>[password para el usuario perfstat]
Nombre del tablespace a utilizar:
SQL>PERFSTAT
Que tablespace temporal usara el usuario PERFSTAT
SQL>TEMP
Revisar los archivos de log spcusr.lis, spctab.lis, spcpkg.lis en busca de ORA-, por si ha
habido algn error. En ese caso, hay que corregir el error, desinstalar Statspack y volver a iniciar el
Pg. 6 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

proceso de instalacin.
SQL> @?/rdbms/admin/spdrop.sql
SQL> @?/rdbms/admin/spcreate.sql

Tomar nuestra primera snapshot.


Nos conectamos como perfstat y ejecutamos la siguiente consulta:
SQL>exec statspack.snap;
Procedimiento PL/SQL terminado correctamente.

Listar todas las snapshots de nuestra base de datos.


select name,snap_id,to_char(snap_time,'DD.MM.YYYY:HH24:MI:SS')
"Date/Time" from stats$snapshot,v$database;

Borrar snapshots.
@?/rdbms/admin/sppurge;

Ajustar el nivel de detalle de las snapshots.


Nivel 0: Este nivel almacena estadsticas generales, incluyendo segmentos de rollback,
cach de filas, SGA, eventos de sistema, procesos de fondo, eventos de sesin, estadsticas de
sistema, estadsticas de tiempos de espera, bloqueos de objetos e informacin de cerrojos.
Nivel 5: Este nivel almacena datos sobre consultas SQL que consuman muchos recursos,
junto con todos los datos capturados por niveles inferiores.
Nivel 6: Este nivel almacena el plan de ejecucin de consultas SQL que consuman muchos
recursos, junto con todos los datos capturados por niveles inferiores.
Nivel 7: Este nivel recoge estadsticas a nivel de segmento, incluyendo lecturas fsicas y
lgicas, bloqueos de filas, tiempos de espera de buffers y todos los datos capturados por niveles
inferiores.
Nivel 10: Este nivel almacena estadsticas sobre cerrojos hijos, junto con todos los datos
capturados por niveles inferiores.
Para modificar el nivel de detalle de nuestras snapshots futuras usamos el siguiente
comando, cambiando 6 por el nivel deseado.
exec statspack.snap(i_snap_level => 6, i_modify_parameter => 'true');

Pg. 7 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Programar la toma de snapshots.


@?/rdbms/admin/spauto.sql
Este script de ejemplo programar la toma de una snapshot cada hora. Para modificar la
programacin de esta tarea o de cualquier otra, podemos utilizar el comando dbms_job.

Creacin de informes.
Nota: No deben compararse snapshots procedentes de diferentes ejecuciones de instancias. La
instancia no debe haber sido apagada entre la snapshot inicial y la final.
La razn es que los valores recopilados por Statspack proceden de vistas que residen en
memoria, por lo que apagar la instancia resetara los valores a 0. Dado que Statspack resta los
valores iniciales a los finales, el resultado sera invlido.
SQL*PLUS>@?/rdbms/admin/spreport.sql

Pg. 8 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Anlisis del informe.


Cabecera
STATSPACK report for
Database DB Id Instance Inst Num Startup Time Release RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- --1270876239 orcl
1 15-Mar-11 00:58 11.2.0.1.0 NO
Host Name
Platform
CPUs Cores Sockets Memory (G)
~~~~ ---------------- ---------------------- ----- ----- ------- -----------PINGU
Microsoft Windows IA ( 1 1
1
1.3
Snapshot
Snap Id Snap Time
Sessions Curs/Sess Comment
~~~~~~~~ ---------- ------------------ -------- --------- -----------------Begin Snap:
1 15-Mar-11 02:07:29
30
4.2
End Snap:
2 15-Mar-11 02:09:08
33
4.0
Elapsed:
1.65 (mins) Av Act Sess:
0.2
DB time:
0.31 (mins)
DB CPU:
0.17 (mins)
Cache Sizes
~~~~~~~~~~~
Buffer Cache:
Shared Pool:

Begin
End
---------- ---------124M
Std Block Size:
8K
200M
Log Buffer: 5,480K

Campo importante: Elapsed time. Merece la pena repetirlo: Si no ha pasado tiempo suficiente entre
cada snapshot o ha pasado demasiado, los valores que se obtengan no sern representativos.

Pg. 9 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Perfil de carga.
Load Profile
Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~
------------------ ----------------- ----------- ----------DB time(s):
0.2
1.4
0.01
0.05
DB CPU(s):
0.1
0.7
0.00
0.02
Redo size:
16,031.7
113,366.9
Logical reads:
288.0
2,036.3
Block changes:
48.0
339.7
Physical reads:
5.9
41.4
Physical writes:
0.1
0.5
User calls:
4.2
29.6
Parses:
16.9
119.3
Hard parses:
1.4
10.2
W/A MB processed:
0.5
3.8
Logons:
0.1
0.6
Executes:
32.0
226.2
Rollbacks:
0.0
0.0
Transactions:
0.1
Executes: Cuantas sentencias se procesan por segundo. Cuantas ms mejor.
Transactions: Cuantas transaciones por segundo se procesan. Cuants ms mejor.
En este caso, la carga de nuestra base de datos es muy ligera.

Porcentaje de eficiencia de la instancia.


Cuanto ms cerca de 100% de eficiencia, mejor.
Instance Efficiency Indicators
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 99.97
Redo NoWait %: 100.00
Buffer Hit %: 97.97 Optimal W/A Exec %: 100.00
Library Hit %: 92.23
Soft Parse %: 91.44
Execute to Parse %: 47.27
Latch Hit %: 100.00
Parse CPU to Parse Elapsd %: 72.63 % Non-Parse CPU: 82.80
Shared Pool Statistics
Begin End
------ -----Memory Usage %: 78.96 79.27
% SQL with executions>1: 71.09 76.20
% Memory for SQL w/exec>1: 76.59 84.09
Si el procentaje de Library Hits es muy bajo, deberiamos examinar el tamao de la shared pool para
verificar que no es demasiado pequea.
Pg. 10 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Pg. 11 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

Top 5 eventos
Top 5 Timed Events
Avg %Total
~~~~~~~~~~~~~~~~~~
wait Call
Event
Waits Time (s) (ms) Time
----------------------------------------- ------------ ----------- ------ -----CPU time
12
55.0
buffer busy waits
4
6 1379 26.2
db file sequential read
446
1
3 6.3
control file sequential read
511
1
2 3.8
log file parallel write
28
1 19 2.5
CPU time no es en realidad un evento de espera, sino la suma de la CPU usada durante la sesin.
Db file sequential read - Aparece con mayor frecuencia cuando hay esperas a la hora escribir en el
espacio temporal.

Top de consultas que consumen ms tiempo de CPU


SQL ordered by Gets DB/Inst: ORCL/orcl Snaps: 1-2
-> End Buffer Gets Threshold: 10000 Total Buffer Gets:
-> Captured SQL accounts for 60.4% of Total Buffer Gets
-> SQL reported below exceeded 1.0% of Total Buffer Gets

28,508

CPU
Elapsd Old
Buffer Gets Executions Gets per Exec %Total Time (s) Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ---------14,183
1
14,183.0 49.8 3.27 17.11 2522684317
Module: SQL*Plus
BEGIN statspack.snap; END;
10,151
3
3,383.7 35.6 2.63
3.18 1279382630
Module: SQL Developer
select 'TABLE' type, ''||o.owner# owner, name object_name, null
column_name, null column_id, null data_type FROM sys.obj$ o whe
re o.name not like 'BIN%' and o.type# = 2 and rownum <=50 and
name like :1 union all select 'VIEW' type, ''||o.owner# owne
704
3
234.7 2.5 2.02
3.69 1656426908
Module: SQL Developer
SELECT /*OracleDictionaryQueries.ALL_TABLE_ORACLE_QUERY*/
X.TABLE_NAME , 'TABLE' OBJECT_TYPE , (SELECT O.OBJECT_I
D
FROM ALL_OBJECTS O
WHERE O.OWNER = X.OWNER
AND O.OBJECT_TYPE = 'TABLE'
AND O.OBJECT_NAME = X.TA
650
54
12.0 2.3 0.03
0.13 3285818817
select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_
Pg. 12 de 14

Josue lvarez Moreno

Fernando Pulido Maleno

obj#, nvl(property,0),subname,type#,d_attrs from dependency$ d,


obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#

Resumen de estadsticas de E/S para cada tablespace.


Tablespace IO Stats
-----------------------------Av Av Av
Av
Buffer Av Buf
Reads Reads/s Rd(ms) Blks/Rd
Writes Writes/s Waits Wt(ms)
-------------- ------- ------ ------- ------------ -------- ---------- -----TAB
1,643
4 1.0 19.2
16,811
39
0 0.0
UNDO
166
0 0.5 1.0
5,948
14
0 0.0
SYSTEM 813
2 2.5 1.6
167
0
0 0.0
PERFSTAT 146
0 0.3 1.1
277
1
0 0.0
SYSAUX
18
0 0.0 1.0
29
0
0 0.0
IDX
18
0 0.0 1.0
18
0
0 0.0
USER
18
0 0.0 1.0
18
0
0 0.0
-------------------------------------------------------------

Material utilizado como referencia en la preparacin de este documento


Oracle Statspack Survival Guide:
http://www.akadia.com/services/ora_statspack_survival_guide.html
Manual de Statspack de Oracle: Disponible en dbhome_1/RDBM/ADMIN/spdoc.txt

Pg. 13 de 14

Josue lvarez Moreno

Fernando Pulido Maleno


(Parte de Puli)

Pg. 14 de 14

Das könnte Ihnen auch gefallen