Chiappa, inicialmente obrigado pela explicação. Com o "teoricamente" não ter mais problemas de hardware, quis dizer que já foram feitos todos os testes com as ferramentas do fornecedor do storage, e a sua resposta "Esses blocos não podem ser usados do jeito que estão" já explica bastante coisa.
Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução pra estes problemas. Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao apagar o objeto, foram preenchidos de forma correta novamente, sem corrompimento. Sobre a tabela que eu estou sem acesso, o datafile é de dados, não é de índices, nem temporário, nem system. Por isso achei bastante estranho. Vou continuar meus estudos sobre o DBMS_REPAIR, se tiver maia alguma dica, será bem-vinda. Abraço Ivan -----Mensagem original----- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa Enviada em: segunda-feira, 16 de janeiro de 2006 20:52 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos Respostas pra cada item : --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" <[EMAIL PROTECTED]> escreveu > > Pessoal, > > BD: ORACLE 9.2.0.7.0 > SO: Linux Red Hat Advanced Server > > No mês passado tive alguns problemas com blocos corrompidos e detectamos > falha em um dos discos do RAID de um BD. > > Solicitamos a troca do disco, que foi efetuada e teoricamente não tenho mais > problema de hardware. ==> num servidor de Produção, vc NÂO PODE ficar em teoria, vc TEM QUE comprovar que o hardware está OK, normalmente isso implica em rodar algum software de teste PRIFUNDO de hardware, só os testes do SO absolutamente não bastam.... Pra discos, muitas vezes o próprio fornecedor do storage oferece algo, veja lá. > > Rodei o DBVerify, que me reportou vários problemas de blocos lógicos > corrompidos. Esses blocos não podem ser usados do jeito que estão... >Como de costume, identifiquei pares de file_id/block_id e > relacionei a objetos do meu banco - alguns blocos eram utilizados por > objetos e outros não. Bloco não usado por índice/tabelas ou é da tablespace temporária, ou é bloco de undo/rollback, é por aí.... Consulte o file_id na dba_data_files e na dba_temp_files que vc deve achar à quais datafiles/temnpfiles eles pertencem... > > > Pergunto: > > O Oracle tem problemas ao reutilizar blocos lógicos corrompidos vazios? ==> é simples aqui, o Oracle ** espera ** que o hardware esteja ok, e ele é um banco de dados, não uma tool de SO, então ele NÂO SABE que o tal bloco já esteve ruim alguma vez. Se vc não quer que esses blocos que já estiveram/estão ruins não sejam usados, é VOCÊ que tem que os marcar como "não-usáveis", isso pode ser feito no SO (a maioria dos softs gerenciadores de storage tem utilitários pra isso) , ou vc pode usar a package DBMS_REPAIR . Com a package, o Oracle não vai mais usar o bloco marcado como inusável, MAS nada impede que o SO, ou outros programas, use-o para alguma coisa, se houver permissão. >Ele > não os conserta automaticamente? ==>> Não , vc é que tem que acionar o procedimento. NA verdade, a corrupção PODE ser em management do bloco (como freelists), pode ser bitmap, pode ser bloco de índice ou de data, há muitas possibilidades, o pessoal da Oracle preferiu que o banco não se metesse a "adivinhar" o que fazer, e ao invés só reportasse um status pro DBA quando solicitado, o que é até um procedimento mais seguro, Se for o caso, o DBV não marca estes blocos > como inutilizáveis? Também não, é o mesmo caso acima, DBV te reporta os problemas, é vc que os terá que corrigir. > Como marcar ou consertar estes blocos para que o problema não mais ocorra? ==>>> UMA VEZ que vc tenha absoluta certeza que p hardware está MESMO ok, vc pode tentar corrigir o bloco de disco formatando-o via utilitários do SO (a maioria dos fornecedores de storage oferece utilitários pra isto), ou, caso via SO não dê certo, vc pode marcar o bloco pra que o Oracle não o use mais,isso é com a package DBMS_REPAIR rotina dbms_repair.SKIP_CORRUPT_BLOCKS. > > > Mais uma pergunta, relacionada à anterior: > > Uma tabela particionada apresenta erro de blocos corrompidos, seja qual for > a partição que eu defina no select. O erro aparece inclusive se eu tento > consultar uma partição inexistente da tabela. Será que não há corrupção nalgum índice dessa tabela?? Ou ainda nos bitmaps dela ?? É o DBV que vai te dizer se os datafiles da tabela E dos índices estão íntegros. E eu prefiro sempre que possível rodar um dbv com o banco offline... > A consulta "select * from dba_extents where file_id=<file> and <block> > between block_id and block_id+blocks-1" não me retorna nenhum objeto. O que > afinal de contas está inválido no meu banco? Este datafile não é da > tablespace system. ==> como eu disse acima, SE o bloc não é encontrado, é sinal que não pé um bloco de dados/índice, a QUAL tablespace pertence o file_id em questão ?? É de um datafile ou de um tempfile ?? []s Chiappa ---------------------------------------------------------------------------- ---------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ ---------------------------------------------------------------------------- ----------------------------------------------______________________________ _______________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html