miércoles, 22 de junio de 2011

Numerico Oracle

Después de unas inconsistencias en la base de datos de oracle necesitaba un método para verificar que fuera numérico un campo de texto, de forma nativa no hay un método pero se puede solucionar con otros metodos

LENGTH(TRIM(TRANSLATE(string1, '0123456789',' ')))


con esta función si nos regresa null significara que el campo es totalmente numérico si nos regresa un valor numérico significara la cantidad de caracteres que no concuerdan con el valor numerico

miércoles, 1 de junio de 2011

Matar sessiones en oracle

Cuando estuve con mis primeras experiencias con oracle fue con .net y con store procedures, estuve con grandes cantidades de informacion me fue dificil hacer las consultas, ya que estas consultas eran a otras bases de la empresa con dblinks de oracle entonces al no conocer la informacion que habia las consultas se hacian eternas y no podia esperar a que respondieran y cuando las detenia con oracle sql developer a veces se colgaba mi session y pues lo mas sencillo fue matar la sesion desde otra sesion y es tan sencillo como primero identificarla

con esta consulta a la vista que tiene oracle

select a.sid, a.serial# serial, a.username, a.machine, a.program, a.status, b.event, b.seconds_in_wait
from v$session a, v$session_wait b
where b.sid = a.sid
and a.username is not null
and status = 'ACTIVE'
order by b.seconds_in_wait


y para matarlas es con

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE

para que sea de manera inmediata sin el IMMEDIATE lo pone en espera para matarla y ya solo nos conectamos de nuevo y ya