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 15 posts - 1 até 15 (de 21 do total)
  • Autor
    Posts
  • #93320
    rhubner
    Participante

      Bom dia moçada, fui fazer um backup full do banco com RMAN e no final apareceu meu indexes como estivesse corrompido

      ORA-19566: exceeded limit of 0 corrupt blocks for file /app/oracle/oradata/valegd02/INDEXES03.DBF

      ja passei o DBV

      dbv file=/app/oracle/oradata/valegd02/INDEXES03.DBF blocksize=8192

      DBVERIFY – Verification complete

      Total Pages Examined : 1290240
      Total Pages Processed (Data) : 0
      Total Pages Failing (Data) : 0
      Total Pages Processed (Index): 1273403
      Total Pages Failing (Index): 0
      Total Pages Processed (Other): 8994
      Total Pages Processed (Seg) : 0
      Total Pages Failing (Seg) : 0
      Total Pages Empty : 7823
      Total Pages Marked Corrupt : 20
      Total Pages Influx : 0
      Highest block SCN : 4221421483 (1.4221421483)

      ae blz, encontrei 20 blocos corrompidos…

      minha pergunta como faço para arrumar?
      dando um alter index INDEXES03.DBF rebuild online; irá funcionar???

      obrigado

      #93321
      vieri
      Participante

        Crie outra tablespace de index e faz o rebuild de todos eles para lá…

        peça ao sysadmin para passar uma ferramenta do tipo “checkdisk’ nesse disco.

        Se não acusar nada, remova o datafile, se acusar deixa ele ai, porque ele está escrito em uma aréa com corrupção física, o caso anterior seria corrupção lógica.

        #93322
        rhubner
        Participante

          bom dia vieri

          seria assim entao

          ALTER INDEX INDEXES03.DBF REBUILD TABLESPACE INDEXES04.DBF;

          posso fazer isso com o banco online normal mesmo?
          nao irá consumir muito I/O

          obrigado

          #93323
          diegolenhardt
          Participante

            tem que fazer o rebuild através do nome do indice,

            alter index index_name rebuild tablespace tablespace_nova ONLINE;

            vai consumir I/O, mas depende do tamanho do indice,

            se puder não usar o online é mais rápido,

            com ONLINE o indice nao fica com status UNASABLE (indisponivel) gerando erro caso seja acessado,

            #93325
            rhubner
            Participante

              blzz….

              o nome do meu indice que esta corrupto é INDEXES03.DBF

              para fazer tudo online entao para não parar nada e não dar problema, poderia ser feito assim..

              ALTER INDEX INDEXES03.DBF REBUILD TABLESPACE INDEXES04.DBF ONLINE;

              iria passar tudo da INDEXES03.DBF para INDEXES04.DBF é isso??

              ta certo assim?

              obrigado

              #93326
              diegolenhardt
              Participante

                não indexes03.dbf é o seu datafile,

                pega a tablespace desse datafile em:


                select *
                from dba_data_files

                depos pega os indices dessa tablespace em:


                select index_name
                from dba_indexes
                where tablespace_name = ???

                todos esses indices você faz o rebuild,

                não sei se tem como identificar os indices de um determinado datafile,

                No codigo abaixo troque ??? pelo nome da tablespace desse datafile, altere NOVA_TABLESPACE pela tablespace que voce vai criar para receber os indices,


                begin
                for i in ( select index_name
                from dba_indexes
                where tablespace_name = ??? ) loop
                execute immediate 'alter index '||i.index_name||' rebuild tablespace NOVA_TABLESPACE ONLINE';
                end loop;
                end loop;

                qualquer dúvida posta aí

                #93327
                rhubner
                Participante

                  blz… so pra saber tbm

                  Plataforma Linux e Oracle 10g 10.2.0.3 (enterprise)

                  minha TABLESPACE é INDEXES

                  nessa tablespace tenho 03 datafiles chamados

                  -rw-r—– 1 oracle oinstall 11255422976 Mar 24 10:41 INDEXES01.DBF
                  -rw-r—– 1 oracle oinstall 2097160192 Mar 24 10:40 INDEXES02.DBF
                  -rw-r—– 1 oracle oinstall 10590625792 Mar 24 10:41 INDEXES03.DBF

                  ate aqui blzaa…

                  ae irei fazer isso daí

                  ALTER INDEX INDEXES REBUILD TABLESPACE INDEXES01 ONLINE;

                  ta certo assim??

                  obrigado

                  #93328
                  diegolenhardt
                  Participante

                    não… o rebuild é no INDICE e NÃO na TABLESPACE (INDEXES),

                    veja a consulta na dba_indexes
                    where tablespace_name = ‘INDEXES’

                    tudo que retornar ai sao os seus indices, aí voce deve fazer rebuild em cada um deles,

                    o script que eu passei faz isso, pra todos..

                    #93329
                    Avatar photoRegis Araujo
                    Participante

                      Ola amigo..

                      Só para complementar oq o Diogo e o Vieri disse..!!

                      Faça assim.. Rode este select abaixo e depois pegue TODO o resultado e joge para executar..!!!
                      Irão aparecer 2 perguntas.. basta respondelas e dar ENTER…!!


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

                      Abraços..!

                      #93330
                      vieri
                      Participante

                        Você terá que fazer índice a índice,
                        não existe um rebuild ALL, por isso
                        terá que montar um script dinâmico conforme
                        mostrado no post acima.

                        “Uma” pergunta?!

                        esse servidor é de produção? possui DBA ?

                        vc “só” conseguira fazer o rebuild online se for Enterprise.

                        #93331
                        rhubner
                        Participante

                          fiz o select aqui que vc falou…

                          select index_name
                          from dba_indexes
                          where tablespace_name = ‘INDEXES’;

                          exemplo

                          INDEX_NAME

                          FIN1821_0009
                          FIN1821_0008
                          FIN1821_0001
                          FIS1851_0005
                          FIS1851_0001
                          FIS1850_0005
                          FIS1850_0001
                          FIS1849_0005
                          FIS1849_0001
                          FIS1847_0024
                          FIS1847_0023

                          deu 5921 rows selected

                          ate aqui blza….

                          e agora??

                          o banco é producao, eu so dba fraldinha to aprendendo ainda…hehehe

                          obrigado

                          #93332
                          Avatar photoRegis Araujo
                          Participante

                            Rhubner.. boa tarde..!

                            Roda o Script q eu passei no post anterior..

                            Ele ja vai retornar o script que vc precisa rodar, basta copiar todos os resultados e deixar rodando…!!! Vai demorar pois é online mas isto não vai dar erro para quem rodar alguma instrução Sql..!!

                            Abraços..!

                            #93333
                            diegolenhardt
                            Participante

                              Não vai dar erro no indice que tá no datafile corrompido ?

                              Terá que ser dropado depois certo?

                              #93334
                              vieri
                              Participante

                                Faz oque o thunder catz falou,
                                rode a saida do SQL no seu client,
                                deve levar algumas horas.

                                Quando terminar passamos para o próximo passo.

                                #93337
                                rhubner
                                Participante

                                  blz, irei fazer perto as 6 horas quando nao estive muita gente conectado ao banco

                                  TABLESPACE_NOVA = INDEXES_NOVA
                                  TABLESPACE_ANTIGA = INDEXES

                                  1) pergunta
                                  Caso de algum problema os indexes voltam no anterior

                                  nao seria bom fazer um

                                  ALTER TABLESPACE INDEXES BEGIN BACKUP;

                                  copiar pra outro lugar e depois END BACKUP, por seguranca??

                                  obrigado

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