DBAtlas · 데이터베이스 운영 아틀라스

데이터베이스와 백업의 손상 검증(VALIDATE)

OracleRMAN

명령어

# Physical + logical block check (without producing a backup):
VALIDATE CHECK LOGICAL DATABASE;
# Scan large datafiles in parallel (11g+, needs multiple channels):
VALIDATE CHECK LOGICAL DATABASE SECTION SIZE 16G;
# A single datafile / tablespace:
VALIDATE DATAFILE 7;
VALIDATE TABLESPACE users;
# Read as if taking a backup and check (including archivelogs):
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
# Readability of a specific backup set:
LIST BACKUP SUMMARY;
VALIDATE BACKUPSET <bs_key>;
-- Corrupt blocks found and the affected segment (SQL):
SELECT file#, block#, blocks, corruption_change#, corruption_type
FROM   v$database_block_corruption ORDER BY file#, block#;
SELECT DISTINCT e.owner, e.segment_name, e.segment_type
FROM   dba_extents e
JOIN   v$database_block_corruption c
  ON   e.file_id = c.file#
 AND   c.block# BETWEEN e.block_id AND e.block_id + e.blocks - 1;

하는 일

데이터 파일과 backup set을 읽어 물리적 블록 손상과 (CHECK LOGICAL 사용 시) 논리적 블록 손상을 탐지하고 결과를 v$database_block_corruption에 기록한다. SQL 쿼리는 손상 블록이 어느 테이블/인덱스에 속하는지 보여 준다.

사용 시점

ORA-01578/ORA-08103 같은 손상 오류 후, 스토리지 문제 후, 정기(주간) 무결성 점검으로. 백업이 실제로 복원 가능함을 증명하기 위해.

주의

전체 읽기를 수행하므로 대형 데이터베이스에서는 I/O 부하가 크다. 피크 시간 외에 실행한다. dba_extents 쿼리는 대형 데이터베이스에서 느릴 수 있다. 손상 블록이 임시(TEMP) 공간이나 여유 공간에 있으면 객체가 매칭되지 않는다.

DBAtlas에서 열기 →

관련 항목