Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #97992
    gauss
    Participante

      Pessoal,

      Estou tentando uma forma de listar o tamanho de cada tabela do banco junto com a soma do tamanho dos seus índices. Vocês conhecem algum script para fazer essa ação?
      A ideia era saber o espaço que cada (junto com seus indices) ocupam no banco de dados.

      Abraços

      #97993
      Marcos Lucas Melo
      Participante

        acho que esse script pode lhe ajudar ele vai exibir o tamanho das tablespace ai você pode ver isso.

        select tablespace_name, sum(bytes)/1024/1024 as “TAMANHO(MB)”
        from dba_data_files
        group by tablespace_name
        order by sum(bytes);

        #97995
        Ishii
        Participante

          Olá,

          Para esse caso é melhor usar a dba_segments mas terá que ter uma função para somar os valores dos índices associados a cada tabela. Não tenho nada pronto, mas a idéia é essa.

          Mas gostei disso e qdo terminar minha view eu posto aqui.

          []s Ishii

          #97996
          gauss
          Participante

            É por aí. Por enquanto cheguei nisso:

            select
            SEGMENT_TYPE “Tipo Objeto”,OWNER || ‘.’ || SEGMENT_NAME as “Objeto”
            ,BYTES/1024/1024
            from DBA_SEGMENTS
            where OWNER=”
            and SEGMENT_NAME in (select TABLE_NAME from DBA_TABLES where OWNER=” union
            select INDEX_NAME from DBA_INDEXES where OWNER=” union
            select SEGMENT_NAME from DBA_LOBS where OWNER=”)
            order by 1,2,3

            Até nesse ponto, tenho o tamanho de cada tabela, indice e lobs. Mas a dificuldade é unir o valor dos indices com cada tabela e apresentar o valor

            Tabela1 (Tamanhotabela+soma_tamanho_indices)
            Tabela2 (Tamanhotabela+soma_tamanho_indices)

            #98003
            Avatar photoRegis Araujo
            Participante

              Ola Senhores..!!

              Bom.. fiz um aqui bem rapido..

              Poderia ser bem melhor.. mas acho que vai ajudar..!!!

              WITH INDEXSUM AS (
              SELECT SUM(S.BYTES) BYTES, I.TABLE_NAME
              FROM DBA_INDEXES I, DBA_SEGMENTS S
              WHERE S.SEGMENT_NAME = I.INDEX_NAME
              AND I.OWNER = '&OWNER'
              GROUP BY I.TABLE_NAME),
              LOBS AS
              (SELECT SUM(S.BYTES) BYTES, L.TABLE_NAME
              FROM DBA_LOBS L, DBA_SEGMENTS S
              WHERE S.SEGMENT_NAME = L.SEGMENT_NAME
              AND L.OWNER = '&OWNER'
              GROUP BY L.TABLE_NAME),
              TABELAS AS (
              SELECT SUM(S.BYTES) BYTES, T.TABLE_NAME
              FROM DBA_TABLES T, DBA_SEGMENTS S
              WHERE S.SEGMENT_NAME = T.TABLE_NAME
              AND T.OWNER = '&OWNER'
              GROUP BY T.TABLE_NAME )
              SELECT B.TABLE_NAME OBJETO,(B.BYTES+NVL(INDEXSUM.BYTES,0)+NVL(LOBS.BYTES,0)) / 1024 / 1024 "TABELA+INDEX+LOBS"
              FROM TABELAS B, INDEXSUM , LOBS
              WHERE B.TABLE_NAME = INDEXSUM.TABLE_NAME (+)
              AND B.TABLE_NAME = LOBS.TABLE_NAME (+)

              Eu acredito seja isto.. mas pode estar faltando algo.. deem uma olhada e quem puder melhorar.. otimo..!!

              Abraços..!

              #98004
              leandrolbs
              Participante

                Opa, este select aqui é infalível…, sempre me ajuda.
                No caso da variável eu utilizo 128 como padrão.


                select segment_name,
                decode(trunc(bytes/1024), 0, to_char(bytes, '9G990'),
                decode(trunc(bytes/1024/1024), 0, to_char(bytes/1024, '9G990D99') || 'K',
                decode(trunc(bytes/1024/1024/1204),
                0, to_char(bytes/1024/1024, '9G990D99') || 'M',
                to_char(bytes/1024/1024/1024, '9G990D99') || 'G'))) tamanho,
                decode(trunc(bytes/&v_tam_extent_base/1024/505),
                0, 'P = &v_tam_extent_base.K * ',
                decode(trunc(bytes/(&v_tam_extent_base/32)/1024/1024/505),
                0, 'M = ' || &v_tam_extent_base/32 || 'M * ',
                'G = &v_tam_extent_base.M * ')) categoria,
                decode(trunc(bytes/&v_tam_extent_base/1024/505),
                0, ceil(bytes/&v_tam_extent_base/1024),
                decode(trunc(bytes/(&v_tam_extent_base/32)/1024/1024/505),
                0, ceil(bytes/(&v_tam_extent_base/32)/1024/1024),
                ceil(bytes/&v_tam_extent_base/1024/1024))) extents
                from user_segments
                where segment_type = 'TABLE'
                order by bytes desc

                #98029
                gauss
                Participante

                  Estou tentando postar uma resposta aqui neste tópico mas estou sendo sempre enviado para o home do GPO 🙄

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.