- 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
-
25 de março de 2010 às 12:51 am #93339
Regis Araujo
ParticipanteOpa..!
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..!!
25 de março de 2010 às 3:14 pm #93343rhubner
Participanteisso 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
25 de março de 2010 às 5:30 pm #93344Regis Araujo
ParticipanteFala 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..!
25 de março de 2010 às 5:37 pm #93345vieri
ParticipanteMais mastigado do que isso, só se liberar a VPN… rsrs
Manda bala e posta o resultado ai..!25 de março de 2010 às 5:51 pm #93347Peterson
ParticipanteThunder Catz,
Excelente post cara!!! ❗
25 de março de 2010 às 7:54 pm #93354Ricardo Portilho Proni
ParticipanteOi.
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 !
-
AutorPosts
- Você deve fazer login para responder a este tópico.