Como verificar as maiores tabelas ou objetos do Oracle
Como a view DBA_SEGMENTS pode lhe ajudar a descobrir as maiores tabelas ou objetos Oracle
Como um administrador de banco de dados ou DBA, você certamente deve ficar atento as maiores tabelas ou objetos do banco de dados.
O tamanho dos objetos Oracle impactam principalmente em questões da administração de um banco de dados como: tempo para realização de backup, performance, crescimento, reconstrução de índice, etc.
A View de um banco de dados Oracle que descreve o armazenamento alocado para todos os segmentos é a DBA_SEGMENTS.
Neste tutorial veremos como utilizar a view DBA_SEGMENTS com a finalidade de verificar os maiores objetos ou tabelas de um banco de dados Oracle.
Abaixo segue um exemplo de como podemos listar os 10 maiores objetos de um banco de dados Oracle
Consulta para verificar as 10 maiores objetos do Oracle
A query abaixo traz os 10 maiores objetos Oracle com o nome do segmento, tipo, nome da Tablespace e o tamanho em Gigabytes
column SEGMENT_NAME format a30 column SEGMENT_TYPE format a15 column TABLESPACE_NAME format a30 SELECT * FROM (select SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024/1024 GB, TABLESPACE_NAME from dba_segments order by 3 desc ) WHERE ROWNUM <= 10;
Note que no exemplo acima a consulta retornará os maiores objetos independente deles serem do tipo tabela (TABLE)
Isso ocorre porque não fizemos um filtro pelo tipo de segmento (Coluna SEGMENT_TYPE da view DBA_SEGMENTS).
É possível efetuar uma consulta especificando o tipo de segmento ( SEGMENT_TYPE).
Exemplo:
INDEX PARTITION, TABLE PARTITION, TABLE, CLUSTER, INDEX, ROLLBACK, DEFERRED ROLLBACK, TEMPORARY, CACHE, LOBSEGMENT e LOBINDEX
Ou seja, se quisermos saber quais os maiores índices de um banco de dados Oracle, basta especificar o segment_type = ‘INDEX’
column SEGMENT_NAME format a30 column SEGMENT_TYPE format a15 column TABLESPACE_NAME format a30 SELECT * FROM (select SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024/1024 GB, TABLESPACE_NAME from dba_segments where segment_type = 'INDEX' order by 3 desc ) WHERE ROWNUM <= 10;
Descobrindo as maiores tabelas Oracle
Para listar as maiores tabelas Oracle, basta utilizar a query que mostramos no exemplo anterior, alterando o filtro do tipo de segmento ( segment_type = ‘TABLE’ )
Desta forma, retornara as 10 maiores tabelas do Oracle juntamente com o proprietário (OWNER) do segmento.
column OWNER format a30 column SEGMENT_NAME format a30 select * from (select owner, segment_name, trunc(sum(bytes)/1024/1024/1024,2) "SIZE GB" from dba_segments where segment_type = 'TABLE' group by segment_name, owner order by 3 desc) where rownum <= 10;
Obrigado
Espero que este post tenha sido útil e lhe ajudado a entender um pouco mais sobre o banco de dados Oracle.
Em nossa seção de Oracle, você confere outras dicas sobre este banco de dados.
Se você gostou, compartilhe estas dicas com um amigo ou participe de nossas redes sociais.
Caso queira nos incentivar a criar mais conteúdos como este, prestigie nossos anunciantes.
Um Grande Abraço e até a próxima dica!