Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #100647
    Avatar de jurupocjurupoc
    Participante

      Pessoal alguem tem uma select pronta onde eu passo o nome do schema e ele apresenta o seguinte resultado:

      TABELA_X 10 registros
      TABELA_Y 21 registros
      ……

      #100649
      Avatar de DanielsonDanielson
      Participante

        ..

        #100650
        Avatar de felipegfelipeg
        Participante

          Olá,

          Alterei o exemplo de um post aberto no AskTom.
          http://asktom.oracle.com/pls/asktom/f?p … 0875645686

          Crie uma função:

          create or replace
          function get_rows( p_tname in varchar2 ) return number
          as
          l_columnValue number default NULL;
          begin
          execute immediate
          'select count(*)
          from ' || p_tname INTO l_columnValue;

          return l_columnValue;
          

          end;
          /

          Chame a função informando o nome do seu schema no select conforme segue abaixo:

          select table_name,
          get_rows(owner||'.'||table_name) cnt
          from all_tables
          where owner = 'OWNER'
          /

          Atenciosamente,
          Felipe.

          #100651
          Avatar de jurupocjurupoc
          Participante

            Obrigado Felipe e Danielson!!!

            Estava tentando fazer aqui mas não deu certo…… olha até onde eu cheguei…

            begin
            for x in ( select
            table_name
            from
            dba_tables
            where
            dba_tables.owner = 'LAMODA' )
            loop
            execute immediate 'insert into teste4 values ('''|| x.table_name ||''','||select count(*) from x.table_name||')';
            end loop;

            end;

            Rsrsrsr só um detalhe não funfoooo

            #100653
            Avatar de diegolenhardtdiegolenhardt
            Participante

              se as estatisticas estiverem computadas tem a coluna num_rows na user_tables…

              😀

              #101362
              Avatar de felipegfelipeg
              Participante

                Sei que é um post velho mas achei uma outra solução interessante.
                E funciona sem precisar coletar as estatísticas.


                SELECT table_name,DBMS_XMLGEN.getxmltype ('SELECT Count(*) c FROM ' || table_name).EXTRACT ('//text()').getnumberval() tot_rows FROM user_tables;

                É só executar no schema que você deseja ter a informação de tabelas e linhas.

                Atenciosamente,
                Felipe.

                #101364
                Avatar de jspauloncijspaulonci
                Participante

                  A quantidade reais de linhas mais perto da realidade é o count, porem imaginem realizar o count de uma tabela de 150 Gb ? é custoso, demorado, e consome muito recurso do servidor.

                  A num_rows da DBA_TABLES ou USER_TABLES, apresentará um valor aproximado , porem acredito que seja a solução mais prudente.

                  #101365
                  Avatar de felipegfelipeg
                  Participante

                    Concordo João,

                    Porém, como ele não informou a quantidade ou o tamanho das tabelas achei válido deixar mais uma solução disponível, até devido ao fato de esta mostrar com exatidão as quantidades.

                    O uso fica a sempre a cargo do bom senso do responsável, independente da solução 8)

                    Atenciosamente,
                    Felipe.

                    #101366
                    Avatar de jspauloncijspaulonci
                    Participante

                      Exato !!!!

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