Oracle Live

15/10/2016

Database – Oradebug

Filed under: Database,Troubleshooting — mogukiller @ 9:31 am

Oradebug es una herramienta de traceo muy potente. Os dejo los comandos mas utiles para configurar esta herramienta.

1.- Seleccionamos el proceso a tracear

-- Seleccionamos la propia sesion

	SQL> ORADEBUG SETMYPID

-- Seleccionamos otra sesion

	-- Obtenemos el PID oracle de la sesion que queremos
	SELECT pid,spid FROM v$process a, v$session b WHERE a.addr=b.paddr and b.sid=&sid_trace and b.serial#=&seria_trace;
	-- Podemos obtener el PID de un JOB corriendo
	SELECT pid FROM v$process WHERE addr =(SELECT paddr FROM v$session WHERE sid =(SELECT sid FROM dba_jobs_running WHERE job = &job_id));

	SQL> ORADEBUG SETORAPID 9 -- Este PID de la v$process.pid
	
	-- Podemos proporcionar el SPID de la sesion que queremos
	oracle 17842 17841   0 16:34:52 ?           0:00 oraclecvhist (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

	SQL> ORADEBUG SETOSPID 17842
	
2.- Imprimimos el nombre de la traza
	
	SQL> ORADEBUG TRACEFILE_NAME
	
	-- En otro terminal
	tail -200f /oracle/diag/rdbms/cvhis/cvhist/trace/cvhist_ora_19319.trc
	
3.- Otras operaciones

	-- Hacemos un flush de escrituras pendientes y cerramos. Nota es necesario hacer esta operativa para que libere el fichero a nivel de SO.
	SQL> ORADEBUG FLUSH
	SQL> ORADEBUG CLOSE_TRACE 
	/*-- nota: esta operativa es interesante para la rotacion de logs de trazas y que si a nivel de sistema operativo hago un mv de la traza a *_old
			 esta traza siguie creciendo hasta que no le haga un ORADEBUG CLOSE_TRACE */
	
	-- Pausamos y reiniciamos el proceso (deja la sesion bloqueada, OJO lanzarlo en tu misma sesion)
	SQL> ORADEBUG SUSPEND
	SQL> ORADEBUG RESUME
	
	SQL> ORADEBUG WEAK <pid> -- Los podemos utilizar para indicar pej al SMON que limpie segemtos temporales
	
4.- Configuramos que queremos tracear
	
	-- Habilitamos el evento para toda la base de datos
	
	SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12
	
	/* Niveles de traceo	
		•0 - No trace. Like switching sql_trace off.
		•2 - The equivalent of regular sql_trace.
		•4 - The same as 2, but with the addition of bind variable values.
		•8 - The same as 2, but with the addition of wait events.
		•12 - The same as 2, but with both bind variable values and wait events.
	*/
	
	-- Habilitamos el evento para la sesion que esta siendo traceada
	
	ORADEBUG SESSION_EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12

	
5.- Paramos de monitorizar ese evento

	SQL> ORADEBUG EVENT 10046 TRACE NAME CONTEXT OFF;
	
6.- Traceamos una determinada sqlid

	SQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:sql_id]';

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: