1
resposta

Caso aparecer o erro ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired.

Muitas pessoas ao executar operações DDL (alteração de tabelas, inclusão de FK’s, etc) recebem o seguinte erro no SQLPLUS, SQL Developer e afins:

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired.

Esse erro ocorre devido á tabela que está sendo alterada estar ocupada com outras operações de manipulação de dados. Nesse caso você sempre receberá o erro ORA-00054 enquanto a tabela que você deseja alterar não estiver disponível.

Para resolver o problema é preciso agendar um horário de baixa atividade no banco de dados, tais como períodos da madrugada ou finais de semana! Fazendo assim, você evita a concorrência durante o dia e consegue executar o script sem esperar por muito tempo. Para ajudar nesse trabalho, existem 2 parâmetros que podem facilitar muito a execução dessa tarefa. São eles:

ALTER SESSION ENABLE PARALLEL DDL; ALTER SESSION SET DDL_LOCK_TIMEOUT= 600; O parâmetro ENABLE PARALLEL DDL habilita a sessão para realizar operações DDL em paralelo com o intuito de reduzir o tempo da operação e o DDL_LOCK_TIMEOUT especifica o tempo em segundos que a sessão vai aguardar por um lock na tabela a ser alterada.

O padrão para o ENABLE PARALLEL DDL é zero, o que indica que você nunca vai esperar por um lock. Sempre deixo o padrão de 10 minutos (600 segundos) quando preciso realizar alguma operação em uma grande tabela no banco de dados.

Feito isso basta rodar a query e aguardar o tempo necessário para executá-la.

Fonte: https://www.sqleo.com.br/2016/11/225/

1 resposta

Olá João, tudo bem?

Essa é uma dica muito importante João, pode ajudar muitos outros alunos que passem por problemas, e foi bem legal também você ter compartilhado ela aqui com a gente :).

Continue assim, qualquer dúvida é só falar e bons estudos !