Como verificar espaço em disco usado por uma tabela no DB2

As vezes surge a necessidade de descobrir qual tabela do nosso banco está ocupando mais espaço em disco, passei um pouco de trabalho para descobrir como fazer isso, e se era possível fazer isso usando o DB2.

Então, descobri que é possível sim, e aparentemente funciona em todas as versões do IBM DB2 v9.X. No meu caso utilizo o 9.7 e funcionou que é uma beleza :).

O comando abaixo permite verificar qual o schema, qual o nome da tabela, o tipo da tabela e quantos KB ela está ocupando em disco. Ele trará ela ordenada da menor para maior.

Primeiro você precisa logar com o usuário que tem privilégios sobre a instância do banco. No meu caso é o db2admin.

[code]su db2admin[/code]

Após isso, conecte-se na base que você deseja verificar o tamanho das tabelas.

A sintaxe do comando é:

[code]db2 connect to <nome do banco>[/code]

No meu exemplo o nome do banco é jcrdb, logo ficará assim:

[code]db2 connect to jcrdb[/code]

Uma vez conectado na base em questão, execute o seguinte comando (pode copiar e colar esse abaixo mesmo):

[code]db2 “SELECT SUBSTR(TabSchema,1,15), SUBSTR(TabName,1,15), TabType, (Data_Object_P_Size + Index_Object_P_Size + Long_Object_P_Size + Lob_Object_P_Size + Xml_Object_P_Size) as Total_P_Size_KB FROM SysIbmAdm.AdminTabInfo ORDER BY Total_P_Size_KB”[/code]

Ele vai demorar um pouco, dependendo do tamanho de sua base, no meu caso esse banco tinha mais de 1000 tabelas. Segue os prints:

print-select-db2-size-table

 

Dei uma resumida no print… Mas o final da lista ele mostra a quantidade de tabelas.

print-select-db2-size-table-end

Fechou! Assim você consegue ver em KB quanto cada tabela está ocupando em seu disco rígido, muito útil pra identificar aquelas tabelas malditas que ficam crescendo diariamente.

Caso você deseje listar só de um determinado schema e tal, é só alterar a sintaxe do comando.

Minhas fontes foram:

FONTE 1 e FONTE 2

Deixe um comentário

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