Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Pl/Sql se cuelga al hacer Update

Estas en el tema de Pl/Sql se cuelga al hacer Update en el foro de Oracle en Foros del Web. Hola a todos, Estoy conectado a una bd en oracle y uso el plsql. El problema es que cuando quiero hacer update a un registro ...
  #1 (permalink)  
Antiguo 29/03/2014, 09:55
 
Fecha de Ingreso: marzo-2008
Ubicación: Peru
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 0
Pl/Sql se cuelga al hacer Update

Hola a todos,

Estoy conectado a una bd en oracle y uso el plsql. El problema es que cuando quiero hacer update a un registro de una tabla se queda ejecutando y no procesa. Lo extraño es que sucede solo con un registro con cierto id, en los demas actualiza correctamente.

¿Cual podria ser el error?

Gracias de antemano.
  #2 (permalink)  
Antiguo 29/03/2014, 10:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pl/Sql se cuelga al hacer Update

Cita:
¿Cual podria ser el error?
¿Y cómo pretendes que lo sepamos si no conocemos:
1) El código del PL/SQL.
2) La estructura de la tabla.
3) Los índices que puedan estar afectados.
4) Los datos que se leen y/o actualizan.
5) La forma de invocación.

En serio, no nos estas dando ninguna información con la que podamos a empezar a trabajar. Como mínimo necesitaríamos la query que se "cuelga".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/03/2014, 10:52
 
Fecha de Ingreso: marzo-2008
Ubicación: Peru
Mensajes: 83
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Pl/Sql se cuelga al hacer Update

El codigo que se esta ejecutando, y donde se queda procesando es:

update esic.tp_procesos pr
set pr.proc_tip = 'IN',
pr.id_usua_modi = 'pruebas',
pr.fec_usua_modi = sysdate
where pr.id_proc = 1
and pr.id_exp = '12511108'

Se queda pensando solo con un exp, con cualquier otro actualiza normal. He ejecutado el codigo en una ventana sql simple y es lo mismo.

He probado matando sesiones, pero sigue igual solo con este exp.
  #4 (permalink)  
Antiguo 31/03/2014, 10:58
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Pl/Sql se cuelga al hacer Update

Todo suena a que tienes un bloqueo a nivel de registro. Es posible que otra sesión haya hecho un update sin decir ni commit ni rollback y el registro quedó en el estado bloqueado.

Código SQL:
Ver original
  1. SELECT
  2.     owner||'.'||object_name Objeto ,
  3.     oracle_username||' ('||s.STATUS||')' usuario_bd ,
  4.     os_user_name usuario_so ,
  5.     machine maquina ,
  6.     l.process procesos_unix ,
  7.     s.sid||','||s.serial# procesos_oracle ,
  8.     r.NAME rs ,
  9.     TO_CHAR(s.logon_time,'yyyy-mm-dd hh24:mi:ss') hora_ultima_conexion
  10. FROM v$locked_object l ,
  11.      dba_objects o ,
  12.      v$session s ,
  13.      v$transaction t ,
  14.      v$rollname r
  15. WHERE l.object_id = o.object_id
  16. AND   s.SID=l.session_id
  17. AND   s.taddr=t.addr
  18. AND   t.xidusn=r.usn
  19. ORDER BY
  20.       usuario_so, procesos_oracle, Objeto;

Con esa consulta puedes detectar los objetos bloqueados y cuales deberias matar desde un usaurio dba.

Una vez tienes detectado el proceso tanto de oracle como de sistema operativo basta con eliminar el bloqueo desde un usuario dba con la siguiente sentencia:

Código SQL:
Ver original
  1. ALTER System KILL SESSION '45,852';

Reemplazas 45,852 por el resultado que te de la columna procesos_oracle de la anterior consluta,

Nos cuentas como te va.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: cuelga, pl-sql, registro, tabla, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:08.