- 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.
-
AutorPosts
-
24 de março de 2010 às 5:40 pm #93320
rhubner
ParticipanteBom 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
24 de março de 2010 às 5:46 pm #93321vieri
ParticipanteCrie 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.
24 de março de 2010 às 5:55 pm #93322rhubner
Participantebom 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/Oobrigado
24 de março de 2010 às 6:09 pm #93323diegolenhardt
Participantetem 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,
24 de março de 2010 às 6:32 pm #93325rhubner
Participanteblzz….
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
24 de março de 2010 às 6:42 pm #93326diegolenhardt
Participantenã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í
24 de março de 2010 às 6:54 pm #93327rhubner
Participanteblz… 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.DBFate aqui blzaa…
ae irei fazer isso daí
ALTER INDEX INDEXES REBUILD TABLESPACE INDEXES01 ONLINE;
ta certo assim??
obrigado
24 de março de 2010 às 7:02 pm #93328diegolenhardt
Participantenã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..
24 de março de 2010 às 7:06 pm #93329Regis Araujo
ParticipanteOla 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..!
24 de março de 2010 às 7:07 pm #93330vieri
ParticipanteVocê 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.
24 de março de 2010 às 7:18 pm #93331rhubner
Participantefiz 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_0023deu 5921 rows selected
ate aqui blza….
e agora??
o banco é producao, eu so dba fraldinha to aprendendo ainda…hehehe
obrigado
24 de março de 2010 às 9:00 pm #93332Regis Araujo
ParticipanteRhubner.. 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..!
24 de março de 2010 às 9:12 pm #93333diegolenhardt
ParticipanteNão vai dar erro no indice que tá no datafile corrompido ?
Terá que ser dropado depois certo?
24 de março de 2010 às 9:59 pm #93334vieri
ParticipanteFaz 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.
24 de março de 2010 às 11:47 pm #93337rhubner
Participanteblz, irei fazer perto as 6 horas quando nao estive muita gente conectado ao banco
TABLESPACE_NOVA = INDEXES_NOVA
TABLESPACE_ANTIGA = INDEXES1) pergunta
Caso de algum problema os indexes voltam no anteriornao seria bom fazer um
ALTER TABLESPACE INDEXES BEGIN BACKUP;
copiar pra outro lugar e depois END BACKUP, por seguranca??
obrigado
-
AutorPosts
- Você deve fazer login para responder a este tópico.