"- O erro é no disco, certo?" PODE SER, como pode não ser : como já dito algumas vezes aqui, necessariamente durante a operação do banco Oracle os blocos ** são ** carregados pra RAM e lá permanecem um tempo, mesmo depois dum COMMIT, certamente um pente de memória ruim ** PODE SIM SENHOR ** corromper um bloco.... Da mesma forma bugs podem causar isso, seja no SO, seja no próprio banco, seja em drivers/utilitários/aplicativos de SO (como softwares de storage, por exemplo)... E finalmente, tranquilamente ERROS DE OPERAÇÂO podem causar corrupção, como por exemplo recover de banco após uma operação NOLOGGING, um operador querendo (via utilitário do sistema, como antivírus ou soft de backup não-compatíveis) manipular arquivos do banco Oracle com banco aberto....
"Tem alguma forma de corrigir este problema?" Sem dúvida, o procedimento será : a. para emergencialmente se livrar da condição de erro, é localizar o segmento e o extent localizados no bloco corrupto (consultando a DBA_EXTENTS), feito isso SE o segmento for do tipo que possa ser re- construído sem perda (como um índice, por exemplo), marque o bloco como indisponível via DBMS_REPAIR (cheque os manuais de Admin pra sintaxe e modo de usar), e reconstrua o segmento. Caso esse bloco seja de um segmento de dados, que vc não pode perder, OU vc faz um block recover (se vc tiver backup RMAN atualizado) OU vc marca como inusável o bloco, dropa o segmento e volta backup (o procedimento exato varia de acordo com a tua política de backup), OU se não tiver backup atualizado vc pode tentar fazer um SALVAGE desse segmento , a nota Subject: Handling Oracle Block Corruptions in Oracle7/8/8i/9i/10g , de Doc ID: Note:28814.1 te lista as opções todas citadas. b. o MAIS IMPORTANTE, depois que vc passou a poder acessar o tal dado, vc IMEDIATAMENTE TEM QUE descobrir a causa, senão isso vai se repetir DE NOVO, e de NOVO, e DE NOVO..... Pra isso, é chamar uma Empresa de manutenção de hardware, que vai fazer um check ** PROFUNDO ** no hardware (ie, discos, RAM, controladora, placa-mãe, etc) do teu srevidor, ** levantar ** com o pessoal da Operação o que foi feito recentemente nessa máquina, que softs rodaram/foram instalados recentemente, E abrir chamado com a Oracle e com o teu Suporte de SO, pra ver o caso de bugs. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "cegoncalvesvr" <[EMAIL PROTECTED]> escreveu > > Ola meus amigos, > > Utilizando o sistema, no momento de gerar um relatorio, surgiu o > seguinte erro no sistema: > > ORA:01578 - Bloco de dados Oracle danificado (arquivo numero.13, > bloco num.845288). ORA:01110-13 do arquivo de > dados: 'E\Oracle\Oradata\cssj\MV2000_I.DBF - (Tablespace) > > Fui no servidor e abri o arquivo alert, o erro esta abaixo: > Corrupt block relative dba: 0x034ce5e8 (file 13, block 845288) > Bad check value found during buffer read > Data in bad block - > type: 6 format: 2 rdba: 0x034ce5e8 > last change scn: 0x0000.057a7f29 seq: 0x2 flg: 0x04 > consistency value in tail: 0x7f290602 > check value in block header: 0xdea1, computed block checksum: 0x1000 > spare1: 0x0, spare2: 0x0, spare3: 0x0 > *** > Reread of rdba: 0x034ce5e8 (file 13, block 845288) found same > corrupted data > > - O erro é no disco, certo? > Tem alguma forma de corrigir este problema? > Isolar a area defeituosa? > > Aguardo. > Obrigado a todos. >