| |||
for update Hola quisiera saber si me pueden ayudar en mi servidor estoy corriendo una consulta con la herramienta PL/SQL Developer hasta en la mañana corria mis consultas incluidas el for update y podia modificar pero ahora estoy tratando de correr la consulta y se queda como colgada la maquina alguna sugerencia del porque esto? |
| |||
Re: for update Buenas. Totalmente de acuerdo, añado algo. Creo, solo creo que el lockeo que hace en esos casos no es exclusivo, sino a nivel de los registros afectados. Y lo del kill, mucho ojito con eso. Puede darse el caso de que ese proceso no muera con el kill sessiony se quede "ZOMBIE" y haya que matar la session a nivel de sistema operativo ( El KILL -9 de unix ). Para hacer esto, a nivel de base de datos tienes que tener permisos de DBA y a nivel de UNIX, de root Os pongo un par de consultas, la primera para detectar bloqueos a nivel de tabla en la que te muestra todos los datos del bloqueador y del que está bloqueado y la segunda para ver datos de sesion, procesos y demas. Muy util para entre otras cosas ver el SID y el SERIAL# para hacer un kill session y el SPID para hacer un kill-9. SELECT /*+ CHOOSE */ BS.USERNAME "BLOCKING_USER", BS.USERNAME "DB_USER", BS.OSUSER "BLOCKING_OSUSER", WS.USERNAME "WAITING_USER", WS.OSUSER "WAITING_OSUSER", BS.SID "SID", WS.SID "WSID", BS.SQL_ADDRESS "ADDRESS", BS.SQL_HASH_VALUE "SQL_HASH", BS.PROGRAM "BLOCKING_APP", WS.PROGRAM "WAITING_APP", BS.MACHINE "BLOCKING_MACHINE", WS.MACHINE "WAITING_MACHINE", BS.OSUSER "BLOCKING_OS_USER", WS.OSUSER "WAITING_OS_USER", BS.SERIAL# "SERIAL", DECODE(wk.TYPE, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'USER Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL USER LOCK', 'DX', 'Distributed Xaction', 'CF', 'Control FILE', 'IS', 'Instance State', 'FS', 'FILE SET', 'IR', 'Instance Recovery', 'ST', 'Disk SPACE Transaction', 'TS', 'Temp Segment', 'IV', 'Library Cache Invalidation', 'LS', 'LOG START OR Switch', 'RW', 'ROW Wait', 'SQ', 'Sequence Number', 'TE', 'Extend TABLE', 'TT', 'Temp TABLE', wk.TYPE) lock_type, DECODE(hk.lmode, 0, 'None', 1, 'NULL', 2, 'ROW-S (SS)', 3, 'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE', TO_CHAR(hk.lmode)) mode_held, DECODE(wk.request, 0, 'None', 1, 'NULL', 2, 'ROW-S (SS)', 3, 'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE', TO_CHAR(wk.request)) mode_requested, TO_CHAR(hk.id1) lock_id1, TO_CHAR(hk.id2) lock_id2 FROM v$lock hk, v$session bs, v$lock wk, v$session ws WHERE hk.block = 1 AND hk.lmode != 0 AND hk.lmode != 1 AND wk.request != 0 AND wk.TYPE (+) = hk.TYPE AND wk.id1 (+) = hk.id1 AND wk.id2 (+) = hk.id2 AND hk.sid = bs.sid(+) AND wk.sid = ws.sid(+) ORDER BY 1 select p.SPID, s.SID, s.SERIAL#, s.USERNAME, s.LOCKWAIT, s.STATUS, s.OSUSER, s.MACHINE, s.TERMINAL, s.PROGRAM, s.LOGON_TIME from v$session s, v$process p where p.addr(+)=s.paddr order by SID -- s.osuser |