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

      Bom dia pessoal,

      Estamos precisando mover dados antigos de algumas grandes tabelas para uma tabela de histórico (Não há Enterprise Edition para partitioned tables).

      A intenção é mover sempre dados mais antigos de 12 meses para a tabela de histórico. Por enquanto, executei manualmente seguinte SQL:

      create table SCHEMA.H_TAB_A parallel 4 as
      select * from SCHEMA.TAB_A
      where DATA < add_months(trunc(sysdate, 'mm'),-12); delete from SCHEMA.TAB_A where DATA < add_months(trunc(sysdate, 'mm'),-12); commit; Existe uma maneira mais elegante de fazer isso? Pensei em talvez criar um job para fazer isso automaticamente, mas não tenho esse conhecimento. Uma outra melhoria seria adicionar uma nova coluna na tabela de historico para manter a data em que os registros foram movidos. Qq ajuda é bem vinda!

      #99960
      Ishii
      Participante

        Olá,

        Maneiras mais “elegantes” sempre haverão. Acho que a questão ficará na performance delas. Se não houver restrições quanto a performance, ou se for um Exadata (Custo $$$$ sem restrições também 😀 ) essa rotina poderia ser reescrita para ser diária…

        Veja quais são as suas restrições e coloque aqui, porém se a rotina funciona e a sua performance é aceitável dentro das restrições, eu não alteraria agora…

        []s Ishii

        #99984
        vieri
        Participante

          talvez uma procedure fazendo commit de 5mil em 5mil linhas é uma boa!!

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