Início > Oracle > Health Check Oracle Database

Health Check Oracle Database

Hoje eu me deparei com a seguinte questão como verificar se há corrupções no ambiente sem se basear somente nos alertas de corrupções no Alert ou ter que rodar o database verify no ambiente inteiro, bom ai vai algumas dicas de health check:

Segue script que eu uso para gerar a linha de comando do dbv:

select ‘dbv file=’ || file_name || ‘ logfile=datafile’ || ‘.’ || FILE_ID || ‘.log’ from dba_data_files;

C:\oracle\product\10.1.0\db_1\database>dbv help=y

Keyword Description (Default)
—————————————————————–
FILE File to Verify (NONE)
START Start Block (First Block of File)
END End Block (Last Block of File)
BLOCKSIZE Logical Block Size (8192)
LOGFILE Output Log (NONE)
FEEDBACK Display Progress (0)
PARFILE Parameter File (NONE)
USERID Username/Password (NONE)
SEGMENT_ID Segment ID (tsn.relfile.block) (NONE)

[oracle@test dbs]$ dbv blocksize=8192 file=/u03/oradata/testdb/datafiles/REPORTING_DATA1.dbf logfile=u02/temp/reporting_data1.log

Um simples export FULL do ambiente já conseguimos encontrar se há objetos que podem estar corrompidos, porém em ambientes grandes chega a ser inviavel, segue:

exp “‘/ as sysdba'” file=healthCheck.dmp log=healthCheck.log full=y statistics=none direct=y

Ou dependendo da versão do Oracle 10g e 11g você consegue checkar pelo RMAN por uma advise do RMAN ou fazendo um backup pois por padrão o comando backup calcula o checksum para cada bloco e armazena o no backup sendo assim se encontrar algo que estiver corrompido irá alertar e falhará o backup, quando encontrado alguma corrupção o RMAN popula a tabela V$DATABASE_BLOCK_CORRUPTION dentro do Oracle, segue algumas formas de validações do ambiente pelo RMAN:

BACKUP VALIDATE CHECK LOGICAL DATABASE; #sintax antes do 11g
validate check logical database; #sintax 11g
VALIDATE DATABASE;
VALIDATE DATAFILE 1 BLOCK 10 TO 13;

A Advise do RMAN funciona da seguinte maneira, segue:

list failure; #lista as falhas
advise failure; #executa a advise e traiz as recomendações, além de gerar 1 script para recuperação

Verificado que na versão 11g há 1 DBMS de Health Monitor no banco de dados que é a DBMS_HM, segue alguns tipos de parametro para passar para checkar pela DBMS:

DB Structure Integrity Check – Verifica os arquivos do bancos e lista se inacessiveis, corrupção ou incosistente.
Data Block Integrity Check – Checa blocos do banco, quando encontrado blocos com corrupção é refletido na view V$DATABASE_BLOCK_CORRUPTION e pode ser recupedo pelo Block Media Recover.
Redo Integrity Check — Checa redo logs e archives (quando disponiveis), se estão acessiveis ou corruptos.
Undo Segment Integrity – Checa logicamente a undo por corrupções, quando encontrada o banco tenta automaticamente através do pmon e smon recuperar a transação, é refletido na view V$CORRUPT_XID_LIST. A maioria deste tipo de problema pode ser solicitado através de commit ou rollback.
Transaction Integrity Check – Semelhante a Undo Segment Integrity, porém apenas realiza a checagem.
Dictionary Integrity Check – Verifica a integridade do dicionário de dados

Segue um exemplo de execução:

BEGIN
DBMS_HM.run_check (
check_name => ‘DB Structure Integrity Check’,
run_name => ‘vitor_test’);
END;
/

Segue para verificar os health monitor criados

SELECT name FROM gv$hm_run;

Segue o report gerado após a execução da DBMS:

SET LONG 100000
SET LONGCHUNKSIZE 1000
SET PAGESIZE 1000
SET LINESIZE 512
SELECT DBMS_HM.get_run_report(‘VITOR_TEST’) FROM dual;

Verificado que o analyse também consegue verificar se acha algum bloco corrompido na tabela do ambiente, segue:

ANALYZE TABLE smon_scn_time VALIDATE STRUCTURE;
ANALYZE TABLE smon_scn_time VALIDATE STRUCTURE CASCADE ONLINE;

Parametro DB_BLOCK_CHECKING

Por Default o parametro vem desabilitado FALSE para todas as tablespaces exceto para a TBS SYSTEM, este parametro check blocos corrompidos no banco e pode ser setado/habilitado no banco conforme abaixo:

SQL> alter system set db_block_checking = TRUE;

Uma vez que habilitado, o checksum irá ocorrer toda vez que um bloco for modificado no banco

Bom estas são algumas técnicas para encontrar corrupções no ambiente. Espero ter ajudado.

Abraço

Categorias:Oracle
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: