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

 


Responder a