Pular para o conteúdo
Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #107959
    Avatar de airoospairoosp
    Participant

      Boa tarde,

      Estou fazendo um levantamento de informações do banco 10g em Windows, e preciso saber quais são as maiores tabelas do banco.
      Vi na internet consultas que usam a DBA_EXTENTS e outras que usam a DBA_SEGMENTS. Qual view deve ser utilizada? Alguém tem algum exemplo de consulta para obter essas informações?

      Obrigado.

      Airton

      #107960
      Avatar de rmanrman
      Participant

        @airoosp

        Utilize a DBA_SEGMENTS, existe um campo de BYTES. Lembre-se que a tabela pode conter INDEX e LOB.

        #107961
        Avatar de Nelson AnchiteNelson Anchite
        Participant

          Talvez esse SQL possa te ajudar.

          select owner, tablespace_name, segment_name, bytes, extents, max_extents, initial_Extent
          from dba_segments
          where segment_type=’TABLE’
          order by bytes

          #107962
          Avatar de airoospairoosp
          Participant

            Com as informações passadas, criei a consulta abaixo:

            select s.owner, s.segment_name, s.ttl_bytes, s.ttl_blks,
            t.tablespace_name, t.status, t.num_rows, t.blocks, t.last_analyzed
            from
            (
            select owner, segment_name, ttl_bytes, ttl_blks
            from
            (
            select owner, segment_name, sum(bytes) ttl_bytes, sum(blocks) ttl_blks
            from dba_segments
            group by owner, segment_name
            order by 3 desc, 4 desc
            )
            where rownum <= 10
            ) s,
            dba_tables t
            where s.owner = t.owner
            and s.segment_name = t.table_name
            order by s.owner, s.segment_name, s.ttl_bytes

            No resultado conteúdo dos campos s.ttl_blks e t.blocks, não deveriam ser os mesmos? Executei a consulta antes e depois de atualizar as estatísticas.

            A tabela CT2600 retornou na consulta com:

            TTL_BYTES = 1048576000
            TTL_BLKS = 128000
            BLOCKS = 127414

            Banco 10g (10.2.0.5) ambiente Windows.

            Obrigado.

            Airton

            #107963
            Avatar de rmanrman
            Participant

              @airoosp

              Fiz um teste aqui e verifiquei a diferença, a BLOCKS da DBA_SEGMENTS deu maior que a BLOCKS da DBA_TABLES.

              Observei um detalhe, não é necessário fazer o SUM na DBA_SEGMENTS, os dados já estão agrupados por segmento.

              #107964
              Avatar de airoospairoosp
              Participant

                RMAN,

                Você tem razão, removi o sum(blocks).

                Uma duvida, as tabelas DR$ ($I , $R , $K , $N , $P , $S), devem ser consideradas também no momento de identificar as maiores tabelas do banco?

                São tabelas de índice, certo?

                #107966
                Avatar de rmanrman
                Participant

                  @airoosp

                  Siga esse artigo, é exatamente o que você precisa:

                  http://eduardolegatti.blogspot.com.br/2011/05/qual-e-mesmo-o-tamanho-de-uma-tabela-no.html

                Viewing 7 posts - 1 through 7 (of 7 total)
                • You must be logged in to reply to this topic.
                plugins premium WordPress