Os 2 principais bancos de dados do mercado possuem alguns meios eficazes de identificar se há blocos corrompidos na base de dados. A intenção é mostrar de maneira simples e clara os métodos utilizados para checar se há algum problema de corrupção de dados, arquivos, dentre outros.
Oracle
Utilizando a view: v$database_block_corruption. É preciso rodar o comando backup validate check logical database para popular a view v$database_block_corruption!
[code lang=”sql”]
su – oracle
rman target /
Recovery Manager: Release 11.2.0.4.0 – Production on Fri Jan 24 21:33:50 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: CAM (DBID=354984621)
RMAN>
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
backup validate check logical database;
}
[/code]
Após rodar o comando acima você receberá uma mensagem parecida com essa abaixo que basicamente informando que o validate foi executado:
[code lang=”sql”]
Starting backup at 24-JAN-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=869 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00134 name=+DATA_ASM_DG/cam/datafile/cam_copa_br_2014.dbf
input datafile file number=00068 name=+DATA_ASM_DG/cam/datafile/cam_liberta_2013.1164.1014261749
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
—- —— ————– ———— ————— ———-
1 OK 0 14488 393235 333147726939
File Name: +DATA_ASM_DG/cam/datafile/cam_copa_br_2014.dbf
Block Type Blocks Failing Blocks Processed
———- ————– —————-
Data 0 172981
Index 0 184618
Other 0 21129
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
—- —— ————– ———— ————— ———-
4 OK 0 88152 163840 332369926878
File Name: +DATA_ASM_DG/cam/datafile/cam_liberta_2013.1164.1014261749
Block Type Blocks Failing Blocks Processed
———- ————– —————-
Data 0 0
Index 0 74697
Other 0 991
Finished backup at 24-JAN-20
released channel: d1
released channel: d2
released channel: d3
released channel: d4
RMAN>
[/code]
Por fim, execute o comando abaixo para verificar se algum bloco está corrompido. É sempre bom que essa consulta não retorne nenhuma linha.
[code lang=”sql”]
select * from v$database_block_corruption
[/code]
SQL Server
No SQL Server, é a tabela suspect_pages é usada para manter informações sobre páginas corrompidas. Existem 3 opções que populam a tabela suspect_pages do banco de dados MSDB com informações precisas:
Durante uma operação DBCC CHECKDB.
Durante uma operação de backup.
Uma query que precisa ler uma página.
Para verificar basta rodar o comando abaixo, lembrando que é sempre bom que essa consulta não retorne nenhuma linha 😀
[code lang=”sql”]
use msdb
go
select * from suspect_pages;
[/code]
E assim aprendemos duas maneiras simples e eficazes de fazer essa checagem!