A operação falha porque o banco de dados está sendo usado no momento
Algumas operações de banco de dados, como descartar um banco de dados, encerrar uma conexão de banco de dados e criar uma cópia de backup de um banco de dados, exigem que o banco de dados associado esteja inativo e que o banco de dados não tenha aplicativos conectados a ele. Quando você tenta essa operação com um banco de dados ativo que tem aplicativos conectados a ele, a operação falha e pode ser retornado um erro com o código SQL -1035N.
Sintomas
Quando você tenta realizar determinadas operações de banco de dados, como descartar um banco de dados, encerrar uma conexão de banco de dados e criar uma cópia de backup de um banco de dados, a operação falha e pode ser retornado um erro informando que o banco de dados está em uso no momento.Causas
Essa mensagem de erro SQL1035N pode ser retornada em um dos seguintes cenários:- Existem conexões abertas ao banco de dados que impedem a tentativa de operação de ser bem-sucedida. Isso pode ocorrer nas seguintes situações:
- Foi solicitado o uso exclusivo, mas o banco de dados já está sendo usado como um banco de dados compartilhado por outro usuário (no mesmo processo).
- O uso exclusivo foi solicitado, mas o banco de dados já está sendo usado como um banco de dados exclusivo. Isso significa que dois processos diferentes estão tentando acessar o mesmo banco de dados.
- Foi atingido o número máximo de conexões com o banco de dados.
- O banco de dados está sendo utilizado por outro usuário em outro sistema.
- O banco de dados foi ativado explicitamente, impedindo a operação de ser bem-sucedida.
- O banco de dados está ativo porque está no estado WRITE SUSPEND.
Solução do Problema
- Execute
uma das seguintes ações:
- Enviar novamente o comando mais tarde, quando o banco de dados não estiver sendo utilizado.
- Alterar a autorização para que corresponda ao usuário atual ou aguardar até que o banco de dados não esteja sendo utilizado.
- Aguardar até que o banco de dados não esteja sendo utilizado com exclusividade.
- Aguarde até que outros usuários em outro sistema tenham se desconectado do banco de dados.
- Emita o comando QUIESCE DATABASE DEFER WITH TIMEOUT <minutes> e um comando CONNECT RESET para liberar as conexões com o banco de dados e impedir que os usuários do aplicativo se reconectem. A opção DEFER aguardará os aplicativos até que eles confirmem a unidade de trabalho atual, em vez de reverter todas as transações em execução.
- Emita o comando LIST APPLICATIONS para listar as conexões com o banco de dados. Emita um comando FORCE APPLICATION ALL para liberar as conexões com o banco de dados.Observação: o comando FORCE APPLICATION ALL é um comando assíncrono que pode retornar como bem-sucedido, embora ainda esteja continuando a limpar as conexões. Um intervalo variável de tempo poderá ser requerido para o comando ser concluído.
- Desative o banco de dados usando o comando DEACTIVATE DATABASE <database-alias>.
- Emita um comando SET WRITE RESUME FOR DATABASE para retomar as operações de gravação no banco de dados.
- Reinicie o membro no qual a operação off-line estava ocorrendo emitindo o comando a seguir:
db2start member <member-number> - Reeditar a operação que falhou inicialmente.