- Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 3 meses atrás por
vieri.
-
AutorPosts
-
22 de novembro de 2011 às 2:46 pm #101731
Girino
ParticipanteOlá
Bom Dia Galera..!! 8)Estou com um problema e não sei como resolver.
Se alguém já passou por isso e puder ajudar. 🙄Estou tentando deletar ou dropar uma tabela no oracle, porém ele não deixa e me retorna a seguinte mensagem:
ORA-00054: resource busy and acquire with NOWAIT specified
Parece que a tabela esta locada no Banco de Dados e não consigo realizar o processo acima. 😥
Outra coisa, tem uma procedure que é executada que insere dados nesta tabela e também não consigo dropar. 😥
Já procurei na net, mas tive muitas dúvidas com relação a esse assunto.
Qual o procedimento que tenho que tomar para dropar a tabela e a procedure e criar novamente? 💡Muito Obrigado..!!
Renato 😀
22 de novembro de 2011 às 6:31 pm #101737lucianof
ParticipanteGeralmente, esse erro aparece quando o objeto em questão, no caso a tabela, está em uso por uma outra sessão, essa consulta abaixo, mostra os objetos que estão em lock, então basta identificar a sessão e dar um kill session.
select owner||’.’||object_name obj
,oracle_username||’ (‘||s.status||’)’ oruser
,os_user_name osuser
,machine computer
,l.process unix
,s.sid
,s.serial#
,r.name
,to_char(s.logon_time,’yyyy/mm/dd hh24:mi:ss’) time
from v$locked_object l
,dba_objects o
,v$session s
,v$transaction t
,v$rollname r
where l.object_id = o.object_id
and s.sid=l.session_id
and s.taddr=t.addr
and t.xidusn=r.usn
order by osuser, obj22 de novembro de 2011 às 8:20 pm #101739Girino
ParticipanteOlá..!! 😀
Já matei o processo, porem ainda continua locado. Estranho..!!
Veja o resultado do select que vc me passou abaixo:
Aparece o OSUSER como (KILLED), ou seja, eu matei o processo e mesmo assim continua locado.OBJ ORUSER OSUSER COMPUTER UNIX SID SERIAL# NAME TIME1 SANTAHELENA.SH_TMP_AUX7 SANTAHELENA (KILLED) oracle WMS 11784 936 42282 _SYSSMU24$ 2011/11/21 15:05:00
Socorro..!! 😥
22 de novembro de 2011 às 8:57 pm #101742vieri
ParticipantePega o spid e mata a sessão a nivel de S.O.
Select p.spid, p.addr, s.sid, s.serial#, s.username, s.osuser, s.status, s.server, s.logon_time, s.sql_hash_value, TO_CHAR (s.last_call_et / 3600, ‘009.99’) inatividade, s.machine, s.program, p.pga_used_mem, p.pga_alloc_mem, p.pga_freeable_mem, pga_max_mem, sql.sql_text
From v$session s, v$process p, v$sql sql
Where s.username is not null
And s.paddr = p.addr (+)
And s.sql_address = sql.address
— and s.sid = 1082
Order by s.last_call_et desc;Se for linux já gera o comando:
Select ‘kill -9 ‘|| p.spid, || ‘ dados:’ || p.addr ,s.status,osuser
From v$session s, v$process p
Where s.username is not null
And s.paddr = p.addr (+)
and s.status in (‘KILLED’)
and s.osuser not in (‘oracle’)
Order by s.last_call_et desc;posta o resultado ai se conseguiu resolver.
22 de novembro de 2011 às 9:40 pm #101747Girino
ParticipanteOlá..!! 8)
Gerou esse resultado:
kill -9 11784 dados:0000000104B22810
O que eu faço agora ??? 😆
Muito Obrigado. 😀
Renato
22 de novembro de 2011 às 9:57 pm #101748vieri
Participantekill -9 11784
executa isso no prompt de comando no linux.
22 de novembro de 2011 às 10:18 pm #101749Girino
ParticipanteOlá Vieri..!! 8)
Funcionou..!! 😀 😀
Muito Obrigado..!! 😉
Renato
22 de novembro de 2011 às 11:59 pm #101753vieri
Participantede nada ..
-
AutorPosts
- Você deve fazer login para responder a este tópico.