| |||
bloqueo buenos dias, tengo un problema veran nuestra sala de servidores han tenido problemas con fallos de luz y algunos procedimientos que se habian venido ejecutando con normalidad en la actualidad han presentado problemas...no se ejecutan con normalidad pero al ejecutarlos en el editor sql se ejecuta bien--- no se que hacer y al destruir la session se pega el servidor que puede ser? no son privilegios... |
| |||
Respuesta: bloqueo Verifica que todos los paquetes dependientes ( incluido el ) estén compilados. Ese error suele dar cuando intentas compilar un pl ( para implementar una modificacion, por ejemplo ) y en ese momento está siendo utilizado. |
| |||
Respuesta: bloqueo bueno corri este query SELECT oracle_username, os_user_name,locked_mode,object_name,object_type FROM v$locked_object a, DBA_OBJECTS b WHERE a.object_id=b.object_id y me dicen que hay algunas tablas estan bloquedas para el usuario en diferentres niveles 2 o 3 como las desbloqueo? |
| ||||
Respuesta: bloqueo Hola, Te dejo una consulta con un poco mas de informacion, pero basicamente es la misma http://www.oracle-base.com/dba/monit...ed_objects.sql La vista V$LOCKED_OBJECTS es dinamica por lo tanto registros son variables, si hay un objeto que esta lockeado en forma persistente, debes identificar la sesion responsable y si corresponde, un kill.
Código:
Saludos alter system kill session 'sid,serial#'; |
| |||
Respuesta: bloqueo Prueba esta : select logon_time,p.spid,SID,S.SERIAL#,s.lockwait,s.modul e,s.program , s.osuser, n.owner ||'.'||n.object_name, s.status from v$session s , v$process p , v$locked_object l , all_objects n where s.sid = l.session_id and l.object_id = n.object_id and p.addr=s.paddr Si el LOCKWAIT está relleno , ese objeto está bloqueado .Ahí tienes el SID y el SERIAL# para hacer el KILL SESSION y si se queda pillao en STATUS = KILLED, el P.SPID es el identificador del proceso del sistema operativo para que puedas hacer un KILL-9 en UNIX o matarlo en windows Esta otra query te identifica el usuario que está sufriendo el bloqueo y el que lo está provocando, muy util. 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 |
| |||
Respuesta: bloqueo hermano agradezco muchisimo el interes en mi caso y que me ayuden en este problema, pero aun continua, el query que me diste me arroja el lockwait vacio con el status killed, de igual forma mato la session, busco el proceso en el servidor para verlo segun el ultimo query q me diste y aun nada...no se que hacer...otra alternativa? el error que da ora-00031 session marked for kill cuando la destruyo Última edición por arameo2010; 09/06/2008 a las 08:14 Razón: me falto algo |
| |||
Respuesta: bloqueo Ok. Lo que tienes que hacer ahora, es hacer un KILL -9 al spid que sale en EL PRIMER QUERY. El KILL-9 es en máquinas UNIX y tienes que hacerlo con permisos de ROOT, si es una maquina windows, presiona CTRL+ALT+SUPR y en el administrador de tareas, pestaña procesos, en la columna PID busca el SPID que te ha devuelto la primera consulta y lo cierras. Si no sale el SPID ( algunas veces desaparece ) ese proceso suele desaparecer al reiniciar la máquina cliente que ha ejecutado dicho proceso. |
| |||
Respuesta: bloqueo ok una pregunta...el segundo query ahy un campo que se llama blocking_machine alli me aparece el nombre de uno de nuestros sevidores el cual es el datawarehose lo reinicio? es ese el sevidor que me estagenerando error? |
| |||
Respuesta: bloqueo A ver, que lo miro....... El blocking_machine es la maquina desde donde se ha lanzado la transacción que está forzando los bloqueos. No necesitas reiniciarlo, si tienes el SPID simplemente calzate ese proceso a nivel de sistema operativo ( Unix-Linux-Windows ...... ). Si no tienes ese identificador o lo dejas hasta que oracle lo calze de manera definitiva ó intentas tirar la máquina. Siendo uno de los servers, no te lo recomiendo................. |