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:
  1. 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.
  2. O banco de dados foi ativado explicitamente, impedindo a operação de ser bem-sucedida.
  3. O banco de dados está ativo porque está no estado WRITE SUSPEND.

Solução do Problema

  1. 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.
  2. Desative o banco de dados usando o comando DEACTIVATE DATABASE <database-alias>.
  3. Emita um comando SET WRITE RESUME FOR DATABASE para retomar as operações de gravação no banco de dados.
  4. Reinicie o membro no qual a operação off-line estava ocorrendo emitindo o comando a seguir:
    db2start member <member-number>
  5. Reeditar a operação que falhou inicialmente.