ORA-00054: o recurso está ocupado e é obtido com o NOWAIT es

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
marcos.santos
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Qua, 01 Out 2008 7:39 pm
Localização: Jundiaí
Contato:

BOA TARDE COLEGAS;
ESTOU TENTADO ATUALIZAR UMA DE MINHAS TABELAS COM A SEGUINTE SINTAXE:

ALTER TABLE CLIENTE ADD TELEFONE VARCHAR(13);

MAS ESTA DANDO ESTE ERRO:

ORA-00054: o recurso está ocupado e é obtido com o NOWAIT especificado
GOSTARIA DE SABER POR QUE E COMO RESOLVER ESTE PROBLEMA, OBRIGADO!


Informações do Ambiente:
* Versão do Oracle:1OG
* Sistema Operacional:XP
:-o
diegoleite
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 115
Registrado em: Sáb, 10 Nov 2007 2:54 pm
Localização: rio de janeiro
Att,


Diego Leite
DBA ORACLE

Amigo,


Trata-se de um Lock compartilhado.

Ao emitir os comandos insert,delete,update e select for update na tabela o oracle cria uma trava compartilhada e uma exclusiva. Enquanto você não finalizar a transacao (commit ou rollback;). você de outra sessao não vai conseguir Atualizar a tabela com um comando DDL. O Que podera ser feito é a ataulizacao da tabela na mesma sessao lembrando que ao emitir um ddl apos um dml essa transacao sera validada com um COMMIT;

Segue um Exemplo.. de alguns testes que fiz a algum tempo atras. Por Acaso foi nesse proprio Forum..

sessao 1

Selecionar tudo

SQL> SHOW USER 
USER é SESSAO1 

SQL> SELECT * FROM V$VERSION; 

BANNER 
---------------------------------------------------------------- 
Oracle Database 10g Release 10.2.0.1.0 - Production 
PL/SQL Release 10.2.0.1.0 - Production 
CORE 10.2.0.1.0 Production 
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production 
NLSRTL Version 10.2.0.1.0 - Production 



SQL> create table teste as select * from dual; 

Tabela criada. 


SQL> insert into teste values('1'); 

1 linha criada. 

SQL> commit; 

Commit concluído. 

SQL> update teste set DUMMY='2'; 

2 linhas atualizadas. 


PROMPT============= SESSAO 2 ORACLE 10G ======================


sessao 2

Selecionar tudo

SQL> SHOW USER 
USER é SESSAO2 

SQL> SELECT * FROM V$VERSION; 

BANNER 
---------------------------------------------------------------- 
Oracle Database 10g Release 10.2.0.1.0 - Production 
PL/SQL Release 10.2.0.1.0 - Production 
CORE 10.2.0.1.0 Production 
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production 
NLSRTL Version 10.2.0.1.0 - Production 



SQL> select * from teste; 

D 
- 
X 
1 

SQL> alter table teste add c date; 
alter table teste add c date 
* 
ERRO na linha 1: 
ORA-00054: o recurso está ocupado e é obtido com o NOWAIT especificado


Espero ter Ajudado!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante