Como executar o REORG, REORGCHK, RUNSTAT em todas tabelas de um banco DB2

O banco de dados da IBM, o DB2 não é lá uma das coisas mais fáceis de mexer. Uma vez precisei executar um REORG em todas as tabelas de um banco e passei trabalho pra conseguir. Tinha que executar em uma por vez e isso não é lá uma coisa muito bacana de fazer.

Achei na internet um comando muito prático pra realizar esse REORG, aproveito também pra deixar documentado como fazer o REORGCHK e o RUNSTAT em todas tabelas de uma base.

Primeiro você precisa se conectar a base que quer executar o REORG:

db2 connect to nome_da_base

Após isso basta executar o seguinte comando:

db2 -x "select 'reorg table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';'from syscat.tables where type = 'T' " > reorg.out

Esse comando acima vai extrair os nomes das tabelas para dentro desse arquivo chamado reorg.out e junto com isso o comando para fazer o reorg. (Para conferir é só visualizar o conteúdo :))

Agora basta executar o script:

db2 -tvf reorg.out

Pronto, dessa maneira o REORG será executado em todas as tabelas do banco que você está conectado.

Para executar o REORGCHK  o procedimento é o mesmo. Basta conectar-se no banco e execute:

db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from \ syscat.tables where type = 'T' " > reorgchk.out

E depois:

db2 -tvf reorgchk.out

Por sua vez pra executar o RUNSTATS em todas a tabelas, conecte-se ao banco e execute:

db2 -x "select 'runstats on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),' and indexes all;'from \ syscat.tables where type = 'T' " > runstats.out

Assim que acabar execute:

db2 -tvf runstats.out

Pronto! Eu executo esses comandos algumas vezes, utilizo um sistema que fragmenta demais o banco e as vezes não consigo nem fazer backup, com esses comandos aí meu backup volta a funcionar.

Espero que ajude! Abraço!

2 thoughts on “Como executar o REORG, REORGCHK, RUNSTAT em todas tabelas de um banco DB2

  • agosto 22, 2016 em 4:48 am
    Permalink

    André, bom dia! Sou novo no DB2, se perguntar algo insignificante desconsidere, mas o 1º comando o rodou de boa REORG, mas os outros dois ocorreram os mesmos erros abaixo:
    REORGCHK e RUNSTAT deram este mesmo erro: DB21007E End of file reached while reading the command.
    Obs.: Estou utilizando DB2 Express-C Win64bts se puder dar um ajudar, suas postagens aqui tem me ajudado muito. Desde já agradeço.

    Resposta
    • agosto 22, 2016 em 1:30 pm
      Permalink

      Bom dia, Marcos pelo erro que tu relatou ali deve ser erro na sintaxe do arquivo gerado no comando que faz o select, dá uma olhada no arquivo gerado e veja se os finais das linhas possuem o “;” certinho.

      Eu rodo esses comandos no Linux, não sei se teria que mudar algo para o Windows, mas acredito que não.

      Valeu!

      Resposta

Deixe um comentário

O seu endereço de e-mail não será publicado.