Pular para o conteúdo
  • Este tópico contém 9 respostas, 4 vozes e foi atualizado pela última vez 17 anos, 3 meses atrás por Avatar photoLeonardo Litz.
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #83903
    Anônimo

      Pessoal,

      Alguém pode me dar uma idéia de como fazer um select para excluir os registros que acabaram de ser incluídos em uma tabela de milhões de registros?

      #83904
      Marcio68Almeida
      Participante

        use o LOG MINER, é um ótimo recurso para esta situação…

        #83905
        Avatar photoLeonardo Litz
        Participante

          Da um order by rowid desc que irá trazer os registros que foram incluidos por ultimo. Ai só cabe vc verificar até onde vc quer exclui-los…

          Vlw Leonardo Litz

          #83907
          Anônimo

            valeu brother.

            #83908
            Anônimo

              vou dar um order by rowid desc e escolhir somente os que eu inclui até acontecer o erro, seja os que já estão com commit ou não.

              #83917
              Anônimo

                isso não tá dando certo não brother….não outra idéia?

                #83919
                Avatar photoLeonardo Litz
                Participante

                  Cara, so uma pergunta, pq vc ja comita o processo no meio, não seria melhor vc comitar o processo todo por ultimo, ai caso ocorra algum erro vc não precisa deletar os dados.

                  #83923
                  Anônimo

                    Olá,

                    Visando performace é melhor realizar transação curta (commit a cada registro)

                    Só faça Transação Longa (commit no final) caso seja necessário trabalhar com atomicidade respentando sua regra de negócio.

                    Abrax,

                    Leandro
                    DBA Oracle

                    #83938
                    abonacin
                    Participante

                      Fala Cleber…

                      Não sei se o “order by rowid” seria uma boa ideia…

                      Na verdade, se você nao tem um campo de date preenchido no insert, acho que você nao vai conseguir fazer isso com segurança…

                      Flw

                      #83939
                      Avatar photoLeonardo Litz
                      Participante

                        Cleber, para solucionar o problema mesmo sendo muitos registros e vc ir dando comite no mesmo. Faz o seguinte:

                        1- Crie um table(dbms_sql.Varchar2_Table ou dbms_sql.number_table depende o tipo da sua chave primaria)
                        2- Declare um contador (c number := 0;)
                        3- Conforme vc for inserindo os registros na tabela, vá alimentando a table( c := c + 1; tab1(c) := pk;).
                        4- Quando ocorrer o erro, execute um loop na table e delete os dados (
                        for dd in 1..tab1.count loop

                        delete tabela where pk = tab1(dd);

                        end loop;
                        )

                        Obs: não precisa inicializar esta table.
                        não esqueca de incrementar o contador.

                        Vlw?
                        Leonardo Litz

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