por Wagner Aparecido Miranda - W2R Consultoria e Sistemas Este artigo relata um fato vivido recentemente em Cliente.Primeiro vamos aos conceitos:O que e uma corrupcao fisica?Um bloco pode estar corrompido se o CHECKSUM estiver invalido. E quando isso pode ocorrer?Quando o cabecalho do bloco estiver invalido - ocorre inicio do bloco esta corrompido com valores invalidos.Quando o bloco estiver incompleto ocorre quando as informacoes do cabecalho do bloco nao correspondem com o restante do bloco (conhecido tambem como cauda de bloco).Quando CHECKSUM estiver invalido o (CHECKSUM) e calculado pelo processo (DBWR) ou pelo processo (direct loader) antes de gravar o bloco do disco e armazenar o cabecalho do bloco.O parametro DB_BLOCK_CHECKSUM pode ser usado para identificar se o bloco foi alterado por algo externo ao banco de dados e tambem para depois que o bloco foi gravado pela ultima vez pelo banco de dados. Toda vez que o bloco e lido e se o parametro DB_BLOCK_CHECKSUM estiver diferente de FALSE, o banco de dados calcula o CHECKSUM e compara a informacao armazenada no cabecalho do bloco.Blocos deslocados ocorrec quando o banco de dados Oracle detecta que o conteudo do bloco a ser lido pertence a um bloco diferente e o CHECKSUM e valido. A corrupcao de blocos fisicos, normalmente sao relatados como erros ORA-1578 e a descricao detalhada da corrupcao e gravada no arquivo do alert.log.O que e uma corrupcao logica?Quando o bloco contem a verificacao do CHECKSUM valida e a estruturado inicio do bloco esta corrompida (o conteudo do bloco esta corrompido).Corrupcoes logicas nao sao normalmente gravadas no alert.log. O utilitario DBVerify apresenta os blocos que estao logicamente danificados no bloco.Quando o parametro DB_BLOCK_CHECKING esta habilitado, ele grava o erro interno ORA-600 [kddummy_blkchk].Se o parametro DB_BLOCK_CHECKING estiver habilitado e o bloco ja estiver logicamente corrompido no disco, a proxima atualizacao do bloco ira marcar o bloco como Soft Corrupt e futuras leituras deste bloco irao produzir o erro ORA-1578. Nesse caso o utilitario DBVerify apresenta a corrupcao com o erro "DBV-200: Block, dba, already marked corrupted".Como identificar os segmentos corrompidos no banco de dados?Para identificar tanto o dano fisico como logico pode usar:1. Utilitario RMAN (Recovery Manager) ou;2. Utilitario DB Verify DBV Utilizando o RMAN o paralelismo torna a validacao mais rapida, porque utiliza varios canais. Por default os backups via RMAN (nao possuem a opcao de verificacao logica) so existe a deteccao de corrupcoes de bloco fisico. Abaixo e apresentado o comando que verifica o banco de dados completo para ambas corrupcoes (logica ou fisica) sem realmente executar uma copia de segurancaRMAN> configure device type disk parallelism 4;RMAN> backup validate check logical database;ouRMAN> run {allocate channel diskl1 type disk;allocate channel disk2 type disk;allocate channel disk3 type disk;allocate channel disk4 type disk;backup validate check logical database;}Como identificar corrupcao fisica ou logica utilizando o utilitario DBVerify?O utilitario DBVERIFY identifica corrupcoes fisicas e logicas, porem esse utilitario nao pode ser executado no banco de dados inteiro utilizando somente um unico comando. Para executa-lo nao e necessario conexao com o banco de dados.Deve-se indicar cada datafile, como no exemplo abaixo:$ dbv file=[caminho+nome_do_datafile] blocksize =