Diagnosticar Uso de CPU Elevado de Oracle - Exe en Windows
Diagnosticar Uso de CPU Elevado de Oracle - Exe en Windows
Diagnosticar Uso de CPU Elevado de Oracle - Exe en Windows
Departamento: Asunto:
Proyecto:
Documento: ODMS$_DIAG_CPU_ORA_WIN.docx
N pags: 6
Pgina 1 de 6
Introduccin.......................................................................................................................................................... 3 Un caso prctico .................................................................................................................................................. 3 Identificar la instancia ..................................................................................................................................... 3 Identificar la sesin oracle. ............................................................................................................................. 4 Referencias...................................................................................................................................................... 6
Pgina 2 de 6
Introduccin.
En entorno Windows, los procesos de una base de datos Oracle estn implementados como hilos dentro de un proceso principal llamado oracle.exe. Por este motivo, si tenemos varias instancias oracle corriendo en la misma mquina, con las herramientas propias del sistema operativo, no es directo poder identificar qu instancia consume ms CPU, y qu sesin en concreto de dicha instancia es quin provoca ese consumo.
Un caso prctico
Identificar la instancia
Detectamos un uso elevado de CPU en una mquina con varias instancias oracle, mediante herramientas de monitorizacin del sistema, queja de los usuarios, etc. Nos conectamos a la mquina y examinamos el Task Manager:
Sabemos que un proceso oracle.exe es el responsable del consumo elevado de CPU, pero no sabemos exactamente cul de las posibles instancias oracle de esa mquina es concretamente.
La podemos identificar porque tenemos el PID, y con el siguiente comando podremos saber de qu servicio oracle se trata: Tasklist /svc | findstr ora
Pgina 3 de 6
Pgina 4 de 6
Ahora nos conectamos a la instancia oracle (TPOR10) e identificamos la sesin oracle que corresponde con cada uno de los hilos que hemos obtenido antes: select p.spid "Thread ID", b.name "Background Process", s.username "User Name", s.osuser "OS User", s.status "STATUS", s.sid "Session ID", s.serial# "Serial No.", s.program "OS Program" from v$process p, v$bgprocess b, v$session s where s.paddr = p.addr and b.paddr(+) = p.addr and p.spid= --TID decimal value-- ;
Pgina 5 de 6
Y la sentencia que estn ejecutando: select s2.sql_text from v$process p,v$session s1,v$sqlarea s2 where p.addr = s1.paddr and s1.SQL_HASH_VALUE = s2.HASH_VALUE and p.spid= --TID decimal value--;
Ya tenemos identificadas las sesiones oracle que estn consumiendo la CPU y podemos tomar las medidas que creamos oportunas.
Referencias
My Oracle Support: How to diagnose the high CPU utilization of ORACLE.EXE in Windows environment [ID 273646.1]
Pgina 6 de 6