Pular para o conteúdo
  • Este tópico contém 20 respostas, 6 vozes e foi atualizado pela última vez 15 anos, 12 meses atrás por Ricardo Portilho Proni.
Visualizando 6 posts - 16 até 21 (de 21 do total)
  • Autor
    Posts
  • #93339
    Avatar photoRegis Araujo
    Participante

      Opa..!

      Bom.. assim.. se corrompeu realmente alguns datafiles de indices.. o Rebuild não vai adiantar.. pois quando ele for “mover” os indices que estão no datafile corrompido.. vai dar erro..!

      Vc vai precisar recriar os indices na nova tablespace..!!

      #93343
      rhubner
      Participante

        isso mesmo, tenho 03 dafafile na tablespace INDEXES

        o dafafile é o ultimo o INDEXES03.DBF que esta corrompido

        como faço para criar outro e mover apenas os indices desse datafile corrompido?

        obrigado

        #93344
        Avatar photoRegis Araujo
        Participante

          Fala Rhubner..!

          Vamos la.. como diz o “Jack”, vamos por partes..!

          1º passo:

          Criar uma nova Tablespace de INDICES:


          create tablespace datafile '' size ;

          2º passo:

          Fazer rebuild dos indices e se possível gerar um spool do rebuild..


          SELECT 'ALTER INDEX '|| A.OWNER ||'."'||A.INDEX_NAME ||'"'|| ' REBUILD TABLESPACE &TABLESPACE_NOVA ONLINE;' FROM ALL_INDEXES A
          WHERE A.TABLESPACE_NAME = '&TABLESPACE_ANTIGA';

          Quando vc for fazer o rebuild ele irá mover apenas os indices que estão integros, não aqueles que estão corrompidos.. os que estão corrompidos irão apresentar erro e é ai que entra o SPOOL.. pois com ele vc irá pegar o nome de TODOS os indices que deram erro…

          3º passo:

          Após pegar o nome dos indices que deram problema, vc vai recria-los apontando para a nova tablespace.

          O select abaixo vai lhe trazer o comando de criação dos indices.. basta vc pega-lo e substituir a tablespace de criação, vc irá substituir pela nova tablespace.


          select dbms_metadata.get_ddl('INDEX','','') from dual;

          Infelizmente vc vai precisar fazer um a um para ter o controle das criações, eu não lembro se esta função funciona quando o objeto esta corrompido, mas não custa tentar, caso não consiga, basta vc criar o indice manualmente, passando parametro por parametro.

          4º passo:

          Conferir se não existe mais nenhum objeto na tablespace antiga (corrompida).

          5º passo:

          Após a conferência, vc vai deixar a tablespace antiga OFFLINE.

          6º passo:

          Após deixar a Tablespace OFFLINE, vc vai dropar a tablespace e os datafiles.. assim..


          drop tablespace including contents and datafiles;

          7º passo:

          Correr para a galera…. IIIUUUUUPIIIIIII!!!!!!!

          Pronto.. estes são os procedimentos para vc ter sua tablespace de indice INTEGRA..!!!

          Abraços.. Espero que lhe ajude..!

          #93345
          vieri
          Participante

            Mais mastigado do que isso, só se liberar a VPN… rsrs
            Manda bala e posta o resultado ai..!

            #93347
            Peterson
            Participante

              Thunder Catz,

              Excelente post cara!!! ❗

              #93354
              Ricardo Portilho Proni
              Participante

                Oi.

                Se você tem um backup anterior de RMAN:

                RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13;

                O Datafile / Blocks devem estar no seu alert log, mais ou menos assim:
                ORA-01578: ORACLE data block corrupted (file # 8, block # 13)
                ORA-01110: data file 8: ‘/oracle/oradata/trgt/users01.dbf’
                ORA-01578: ORACLE data block corrupted (file # 2, block # 19)
                ORA-01110: data file 2: ‘/oracle/oradata/trgt/undotbs01.dbf’

                Abraço !

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