› Fóruns › Banco de dados Oracle › ORA-19566: exceeded limit of 0 corrupt blocks for file › ORA-19566: exceeded limit of 0 corrupt blocks for file
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..!