Re: RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-18 Por tôpico silvia . soares
 Prezado Ivan,

 Já utilizei o procedimento abaixo em algumas situações e resolveu meu 
problema:

1) Executar o seguinte procedimento de sistema:
   dbms_repair.skip_corrupt_blocks 
('',''.'');

2) Criar uma tabela temporária com os dados da tabela corrompida:
   create table  as select * from ;

3) Dropar a tabela corrompida, criar uma nova e tranferir os dados 
recém-carregados da
tabela temporária:
   drop table ;
   create table  as select * from ;

 Espero tê-lo ajudado!

 Bom dia!
 
 Kika.
 
 




"Ivan Ricardo Schuster" <[EMAIL PROTECTED]>
Enviado Por: oracle_br@yahoogrupos.com.br
18/01/2006 07:40
Responder a oracle_br

 
Para:        
    cc: 
    Assunto:    RES: [oracle_br] Re: Algumas duvidas sobre blocos 
corrompidos








Chiappa,

Parei e iniciei o banco novamente (shutdown immediate / startup) e a 
tabela
continua inacessivel. Se eu definir estes blocos como inutilizáveis será 
que
esta tabela não ficará perdida e inutilizável? É uma tabela grande (180 
GB)
e tenho outra maior ainda nesta mesma tablespace.

Abraço
Ivan

-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 17 de janeiro de 2006 11:42
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

afaik, não é preciso : quando vc baixa e sobe o banco, os 
blocos "temporários" do tipo voltam pra dba_free_space, vão ser re-
usados, e já que vc rodou a verificação de hw e o bloco está 
fisicamente bom no disco, quando ele for re-usado será lido/gravado 
sem probs, creio.

[]s

 Chiappa
 --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> > Na verdade, mesmo em tablespaces de dados podem ser criados 
extents 
> > temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
nessa 
> > situação os caras sendo inseridos vão pra cima do high-water mark 
e 
> > são marcados como segmentos temporários (portanto NÃO entram na 
> > DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
marca 
> > esses extents como definitivos e avança a HWM. Num caso desses, 
se 
> > tiver corrupção/pau qquer no processo, logicamente esses blocos 
não 
> > serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.
> 
> 
> Acredito que terei que apagar esta tabela, certo?
> 
> 
> 
> -Mensagem original-
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 17 de janeiro de 2006 10:49
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos 
corrompidos
> 
> --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
> <[EMAIL PROTECTED]> escreveu
> >
> > 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
> 
> ==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre a 
> confiabilidade do hw, ok ...
> 
> > a sua resposta "Esses blocos não podem ser usados do jeito que 
> estão" já
> > explica bastante coisa.
> 
> E é como falei, o Oracle ** não ** sai "consertando" blocos 
> automaticamente porque, além de não "saber" fazer isso (há n+1 
> hardwares possíveis pelaí, x+1 tipos de filesystems/volume groups, 
> etc), ainda há a questão do negócio, tranquilamente pode ser que 
> alguns blocos corrupots pertencem a tabelas/índices;objetos que 
PODEM 
> ser dropados, outros não, só vc é que pode dizer.
> 
> > 
> > Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução 
pra 
> estes
> > problemas. 
> 
> Na verdade é um conjunto de ações : agora que hardware está 
> confiável, primeiro passo é o DBV contra TODOS os datafiles (eu se 
> possível faço um dbv com o banco aberto E um com o banco fechado), 
e 
> TODOS os blocos reportados como ruins pelo DBV deven ser corrigidos 
> (inicialmente pode ser correção soft, pelo DBMS_REPAIR mesmo). 
Feito 
> isso, novos DBVs pra mostrar que a corrupção foi MESMO corrigida, e 
> como toque final um export full sem gerar .dmp (tipo desviando 
> pra /dev/null) pra "forçar" a leitura de todos os segmentos, uma 
> checagem com DBMS_REPAIR.CHECK_OBJECT nos objetos do banco, e é 
isso 
> aí.
> 
> >Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao
> > apagar o objeto, foram preenchidos de forma correta novamente, sem
> > corrompimento.
> 
> Isso é uma indicação que realmente o problema devia ser mesmo disco 
> ruim, pois quan

RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-18 Por tôpico jlchiappa
É,realmente então esses blocos estão perdidos mesmo, o negócio é  os 
marcar como inacessíveis. Não, a tabela não vai ficar inacessível, o 
que vai ficar inacessível são as n linhas da tabela que residiam no
(s) bloco(s) corrupto(s). O que eu faria se fosse vc é fazer uma 
salvagem dos dados dessa tabela antes, lendo os dados dos outros 
blocos (seja via PL/SQL como mostrado na nota do metalink 
2064553.4, , seja via pro*C se vc tiver um mínimo conhecimento de C 
como mostrado na nota 97357.1). SE vc tiver um mínimo conhecimento 
nalguma linguagem de programação que permita ler um arquivo binário 
especificando o ponto de origem da leitura (como o fseek no C), vc 
pode tentar ler e gravar o conteúdo dos blocos ruins , OU vc pode 
tentar um dump desses blocos com o comando alter system dump datafile 
nn block xxx; de repente ainda dá pra extrair alguma informação mais.

==> Tendo essa salvagem em mãos pra se garantir, aí sim é usar a  
DBMS_REPAIR pra marcar os blocos como inusáveis, é isso. 

 Quanto à questão de ter "mais outras tabelas na mesma tablespace" : 
** SE ** vc tem o hardware absolutamente checado (como vc já disse 
que tem), se após a correção dos blocos todos vc fez um DBV com o 
banco online, um export full, usou a rotina de check de objeto da 
DBMS_REPAIR, fez outro DBV com o banco offline e refez o check de 
disco, vc já tem a garantia possível de que está tudo bem, nesse 
cenário não há porque se preocupar com as tabelas na mesma tablespace 
mais do que com qquer outras.

´[]s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> Chiappa,
> 
> Parei e iniciei o banco novamente (shutdown immediate / startup) e 
a tabela
> continua inacessivel. Se eu definir estes blocos como inutilizáveis 
será que
> esta tabela não ficará perdida e inutilizável? É uma tabela grande 
(180 GB)
> e tenho outra maior ainda nesta mesma tablespace.
> 
> Abraço
> Ivan
> 
> -Mensagem original-
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 17 de janeiro de 2006 11:42
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos 
corrompidos
> 
> afaik, não é preciso : quando vc baixa e sobe o banco, os 
> blocos "temporários" do tipo voltam pra dba_free_space, vão ser re-
> usados, e já que vc rodou a verificação de hw e o bloco está 
> fisicamente bom no disco, quando ele for re-usado será lido/gravado 
> sem probs, creio.
> 
> []s
> 
>  Chiappa
>  --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
> <[EMAIL PROTECTED]> escreveu
> >
> > > Na verdade, mesmo em tablespaces de dados podem ser criados 
> extents 
> > > temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
> nessa 
> > > situação os caras sendo inseridos vão pra cima do high-water 
mark 
> e 
> > > são marcados como segmentos temporários (portanto NÃO entram na 
> > > DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
> marca 
> > > esses extents como definitivos e avança a HWM. Num caso desses, 
> se 
> > > tiver corrupção/pau qquer no processo, logicamente esses blocos 
> não 
> > > serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.
> > 
> > 
> > Acredito que terei que apagar esta tabela, certo?
> > 
> > 
> > 
> > -Mensagem original-
> > De: oracle_br@yahoogrupos.com.br 
> [mailto:[EMAIL PROTECTED] Em
> > nome de jlchiappa
> > Enviada em: terça-feira, 17 de janeiro de 2006 10:49
> > Para: oracle_br@yahoogrupos.com.br
> > Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos 
> corrompidos
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
> > <[EMAIL PROTECTED]> escreveu
> > >
> > > 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
> > 
> > ==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre 
a 
> > confiabilidade do hw, ok ...
> > 
> > > a sua resposta "Esses blocos não podem ser usados do jeito que 
> > estão" já
> > > explica bastante coisa.
> > 
> > E é como falei, o Oracle ** não ** sai "consertando" blocos 
> > automaticamente porque, além de não "saber" fazer isso (há n+1 
> > hardwares possíveis pelaí, x+1 tipos de filesystems/volume 
groups, 
> > etc), ainda há a questão do negócio, tranquilamente pode

RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-18 Por tôpico Ivan Ricardo Schuster
Chiappa,

Parei e iniciei o banco novamente (shutdown immediate / startup) e a tabela
continua inacessivel. Se eu definir estes blocos como inutilizáveis será que
esta tabela não ficará perdida e inutilizável? É uma tabela grande (180 GB)
e tenho outra maior ainda nesta mesma tablespace.

Abraço
Ivan

-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 17 de janeiro de 2006 11:42
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

afaik, não é preciso : quando vc baixa e sobe o banco, os 
blocos "temporários" do tipo voltam pra dba_free_space, vão ser re-
usados, e já que vc rodou a verificação de hw e o bloco está 
fisicamente bom no disco, quando ele for re-usado será lido/gravado 
sem probs, creio.

[]s

 Chiappa
 --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> > Na verdade, mesmo em tablespaces de dados podem ser criados 
extents 
> > temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
nessa 
> > situação os caras sendo inseridos vão pra cima do high-water mark 
e 
> > são marcados como segmentos temporários (portanto NÃO entram na 
> > DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
marca 
> > esses extents como definitivos e avança a HWM. Num caso desses, 
se 
> > tiver corrupção/pau qquer no processo, logicamente esses blocos 
não 
> > serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.
> 
> 
> Acredito que terei que apagar esta tabela, certo?
> 
> 
> 
> -Mensagem original-
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 17 de janeiro de 2006 10:49
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos 
corrompidos
> 
> --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
> <[EMAIL PROTECTED]> escreveu
> >
> > 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
> 
> ==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre a 
> confiabilidade do hw, ok ...
> 
> > a sua resposta "Esses blocos não podem ser usados do jeito que 
> estão" já
> > explica bastante coisa.
> 
> E é como falei, o Oracle ** não ** sai "consertando" blocos 
> automaticamente porque, além de não "saber" fazer isso (há n+1 
> hardwares possíveis pelaí, x+1 tipos de filesystems/volume groups, 
> etc), ainda há a questão do negócio, tranquilamente pode ser que 
> alguns blocos corrupots pertencem a tabelas/índices;objetos que 
PODEM 
> ser dropados, outros não, só vc é que pode dizer.
> 
> > 
> > Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução 
pra 
> estes
> > problemas. 
> 
> Na verdade é um conjunto de ações : agora que hardware está 
> confiável, primeiro passo é o DBV contra TODOS os datafiles (eu se 
> possível faço um dbv com o banco aberto E um com o banco fechado), 
e 
> TODOS os blocos reportados como ruins pelo DBV deven ser corrigidos 
> (inicialmente pode ser correção soft, pelo DBMS_REPAIR mesmo). 
Feito 
> isso, novos DBVs pra mostrar que a corrupção foi MESMO corrigida, e 
> como toque final um export full sem gerar .dmp (tipo desviando 
> pra /dev/null) pra "forçar" a leitura de todos os segmentos, uma 
> checagem com DBMS_REPAIR.CHECK_OBJECT nos objetos do banco, e é 
isso 
> aí.
> 
> >Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao
> > apagar o objeto, foram preenchidos de forma correta novamente, sem
> > corrompimento.
> 
> Isso é uma indicação que realmente o problema devia ser mesmo disco 
> ruim, pois quando vc trocou o disco e refez o array, os blocos em 
> questão (que antes deviam estar no disco ruim), passaram a apontar 
> pra um outro disco bom, e nele foram gravados/lidos  com sucesso.
> 
> > 
> > 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.
> 
> Na verdade, mesmo em tablespaces de dados podem ser criados extents 
> temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
nessa 
> situação os caras sendo inseridos vão pra cima do high-water mark e 
> são marcados como segmentos temporários (portanto NÃO entram na 
> DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
marca 
> esses extents como definitivos e avança a HWM. Num caso desses,

RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-17 Por tôpico jlchiappa
afaik, não é preciso : quando vc baixa e sobe o banco, os 
blocos "temporários" do tipo voltam pra dba_free_space, vão ser re-
usados, e já que vc rodou a verificação de hw e o bloco está 
fisicamente bom no disco, quando ele for re-usado será lido/gravado 
sem probs, creio.

[]s

 Chiappa
 --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> > Na verdade, mesmo em tablespaces de dados podem ser criados 
extents 
> > temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
nessa 
> > situação os caras sendo inseridos vão pra cima do high-water mark 
e 
> > são marcados como segmentos temporários (portanto NÃO entram na 
> > DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
marca 
> > esses extents como definitivos e avança a HWM. Num caso desses, 
se 
> > tiver corrupção/pau qquer no processo, logicamente esses blocos 
não 
> > serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.
> 
> 
> Acredito que terei que apagar esta tabela, certo?
> 
> 
> 
> -Mensagem original-
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de jlchiappa
> Enviada em: terça-feira, 17 de janeiro de 2006 10:49
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos 
corrompidos
> 
> --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
> <[EMAIL PROTECTED]> escreveu
> >
> > 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
> 
> ==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre a 
> confiabilidade do hw, ok ...
> 
> > a sua resposta "Esses blocos não podem ser usados do jeito que 
> estão" já
> > explica bastante coisa.
> 
> E é como falei, o Oracle ** não ** sai "consertando" blocos 
> automaticamente porque, além de não "saber" fazer isso (há n+1 
> hardwares possíveis pelaí, x+1 tipos de filesystems/volume groups, 
> etc), ainda há a questão do negócio, tranquilamente pode ser que 
> alguns blocos corrupots pertencem a tabelas/índices;objetos que 
PODEM 
> ser dropados, outros não, só vc é que pode dizer.
> 
> > 
> > Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução 
pra 
> estes
> > problemas. 
> 
> Na verdade é um conjunto de ações : agora que hardware está 
> confiável, primeiro passo é o DBV contra TODOS os datafiles (eu se 
> possível faço um dbv com o banco aberto E um com o banco fechado), 
e 
> TODOS os blocos reportados como ruins pelo DBV deven ser corrigidos 
> (inicialmente pode ser correção soft, pelo DBMS_REPAIR mesmo). 
Feito 
> isso, novos DBVs pra mostrar que a corrupção foi MESMO corrigida, e 
> como toque final um export full sem gerar .dmp (tipo desviando 
> pra /dev/null) pra "forçar" a leitura de todos os segmentos, uma 
> checagem com DBMS_REPAIR.CHECK_OBJECT nos objetos do banco, e é 
isso 
> aí.
> 
> >Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao
> > apagar o objeto, foram preenchidos de forma correta novamente, sem
> > corrompimento.
> 
> Isso é uma indicação que realmente o problema devia ser mesmo disco 
> ruim, pois quando vc trocou o disco e refez o array, os blocos em 
> questão (que antes deviam estar no disco ruim), passaram a apontar 
> pra um outro disco bom, e nele foram gravados/lidos  com sucesso.
> 
> > 
> > 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.
> 
> Na verdade, mesmo em tablespaces de dados podem ser criados extents 
> temporários , por exemplo quando vc faz um INSERT /* APPEND */, 
nessa 
> situação os caras sendo inseridos vão pra cima do high-water mark e 
> são marcados como segmentos temporários (portanto NÃO entram na 
> DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só 
marca 
> esses extents como definitivos e avança a HWM. Num caso desses, se 
> tiver corrupção/pau qquer no processo, logicamente esses blocos não 
> serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.
> 
> []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/ 
> -

RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-17 Por tôpico Ivan Ricardo Schuster
> Na verdade, mesmo em tablespaces de dados podem ser criados extents 
> temporários , por exemplo quando vc faz um INSERT /* APPEND */, nessa 
> situação os caras sendo inseridos vão pra cima do high-water mark e 
> são marcados como segmentos temporários (portanto NÃO entram na 
> DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só marca 
> esses extents como definitivos e avança a HWM. Num caso desses, se 
> tiver corrupção/pau qquer no processo, logicamente esses blocos não 
> serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.


Acredito que terei que apagar esta tabela, certo?



-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de jlchiappa
Enviada em: terça-feira, 17 de janeiro de 2006 10:49
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

--- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> 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

==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre a 
confiabilidade do hw, ok ...

> a sua resposta "Esses blocos não podem ser usados do jeito que 
estão" já
> explica bastante coisa.

E é como falei, o Oracle ** não ** sai "consertando" blocos 
automaticamente porque, além de não "saber" fazer isso (há n+1 
hardwares possíveis pelaí, x+1 tipos de filesystems/volume groups, 
etc), ainda há a questão do negócio, tranquilamente pode ser que 
alguns blocos corrupots pertencem a tabelas/índices;objetos que PODEM 
ser dropados, outros não, só vc é que pode dizer.

> 
> Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução pra 
estes
> problemas. 

Na verdade é um conjunto de ações : agora que hardware está 
confiável, primeiro passo é o DBV contra TODOS os datafiles (eu se 
possível faço um dbv com o banco aberto E um com o banco fechado), e 
TODOS os blocos reportados como ruins pelo DBV deven ser corrigidos 
(inicialmente pode ser correção soft, pelo DBMS_REPAIR mesmo). Feito 
isso, novos DBVs pra mostrar que a corrupção foi MESMO corrigida, e 
como toque final um export full sem gerar .dmp (tipo desviando 
pra /dev/null) pra "forçar" a leitura de todos os segmentos, uma 
checagem com DBMS_REPAIR.CHECK_OBJECT nos objetos do banco, e é isso 
aí.

>Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao
> apagar o objeto, foram preenchidos de forma correta novamente, sem
> corrompimento.

Isso é uma indicação que realmente o problema devia ser mesmo disco 
ruim, pois quando vc trocou o disco e refez o array, os blocos em 
questão (que antes deviam estar no disco ruim), passaram a apontar 
pra um outro disco bom, e nele foram gravados/lidos  com sucesso.

> 
> 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.

Na verdade, mesmo em tablespaces de dados podem ser criados extents 
temporários , por exemplo quando vc faz um INSERT /* APPEND */, nessa 
situação os caras sendo inseridos vão pra cima do high-water mark e 
são marcados como segmentos temporários (portanto NÃO entram na 
DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só marca 
esses extents como definitivos e avança a HWM. Num caso desses, se 
tiver corrupção/pau qquer no processo, logicamente esses blocos não 
serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.

[]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

RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-17 Por tôpico jlchiappa
--- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" 
<[EMAIL PROTECTED]> escreveu
>
> 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

==>. ESSE é o ponto que quis frisar, não pode haver dúvidas sobre a 
confiabilidade do hw, ok ...

> a sua resposta "Esses blocos não podem ser usados do jeito que 
estão" já
> explica bastante coisa.

E é como falei, o Oracle ** não ** sai "consertando" blocos 
automaticamente porque, além de não "saber" fazer isso (há n+1 
hardwares possíveis pelaí, x+1 tipos de filesystems/volume groups, 
etc), ainda há a questão do negócio, tranquilamente pode ser que 
alguns blocos corrupots pertencem a tabelas/índices;objetos que PODEM 
ser dropados, outros não, só vc é que pode dizer.

> 
> Estou lendo sobre DBMS_REPAIR e acho que vai ser esta a solução pra 
estes
> problemas. 

Na verdade é um conjunto de ações : agora que hardware está 
confiável, primeiro passo é o DBV contra TODOS os datafiles (eu se 
possível faço um dbv com o banco aberto E um com o banco fechado), e 
TODOS os blocos reportados como ruins pelo DBV deven ser corrigidos 
(inicialmente pode ser correção soft, pelo DBMS_REPAIR mesmo). Feito 
isso, novos DBVs pra mostrar que a corrupção foi MESMO corrigida, e 
como toque final um export full sem gerar .dmp (tipo desviando 
pra /dev/null) pra "forçar" a leitura de todos os segmentos, uma 
checagem com DBMS_REPAIR.CHECK_OBJECT nos objetos do banco, e é isso 
aí.

>Eu fiquei na duvida, pois alguns destes blocos corrompidos, ao
> apagar o objeto, foram preenchidos de forma correta novamente, sem
> corrompimento.

Isso é uma indicação que realmente o problema devia ser mesmo disco 
ruim, pois quando vc trocou o disco e refez o array, os blocos em 
questão (que antes deviam estar no disco ruim), passaram a apontar 
pra um outro disco bom, e nele foram gravados/lidos  com sucesso.

> 
> 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.

Na verdade, mesmo em tablespaces de dados podem ser criados extents 
temporários , por exemplo quando vc faz um INSERT /* APPEND */, nessa 
situação os caras sendo inseridos vão pra cima do high-water mark e 
são marcados como segmentos temporários (portanto NÃO entram na 
DBA_SEGMENTS/DBA_EXTENTS) : quando ocorre um COMMIT, o banco só marca 
esses extents como definitivos e avança a HWM. Num caso desses, se 
tiver corrupção/pau qquer no processo, logicamente esses blocos não 
serão encontrados na DBA_EXTENTS/DBA_SEGMENTS.

[]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

<*> 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

 





RES: [oracle_br] Re: Algumas duvidas sobre blocos corrompidos

2006-01-17 Por tôpico Ivan Ricardo Schuster
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= and 
> 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

 Chia