대부분의 Database 들이 백업/복구 기능을 갖추고 있습니다. 그런데, 보통은 DB 전체를 복구하거나 데이터파일 단위까지 복구하는 정도 입니다.
오라클은 특정 데이터 블록(Data block)이 손상된 경우에, 데이터파일 전체를 복구하지 않고, 손상된 블록만 복구할 수 있습니다.
손상된 블록만 복구하는 것이기 때문에 빠르게 복구할 수 있는 장점이 있습니다.
데이터블록 손상은 여러 이유로 발생할 수 있는데, 일단 블록손상이 발생하면 해당블록에 작업하려고 할 때 아래와 같이 ORA-01578, ORA-01110 에러가 발생합니다.
sys 유저에서 v$database_block_corruption 뷰를 조회하면, 정확히 Block Corruption 이 발생한 파일#, 블록# 를 확인할 수 있습니다.
이렇게 확인이 되었으면, RMAN 에서 커맨드 한줄만 치면 복구가 됩니다.
손상된 블록이 한개인 경우는 위와 같이 하면 되고, 여러개인 경우는 아래와 같이 커맨드를 사용할 수 있습니다.
-- 1) recover 다음에 datafile 과 block 을 반복적으로 지정
RMAN> recover datafile 7 block 344
datafile 8 block 250;
-- 2) 아래의 커맨드는 v$database_block_corruption 뷰에 들어있는 모든 block 들을 복구
RMAN> recover corruption list;
손상된 블록이 복구되고나면, v$database_block_corruption 조회시 해당 데이터가 사라집니다.
손상된 블록을 가지고 있었던 테이블에 작업을 해보면, 이제는 에러없이 잘 되는 것을 확인할 수 있습니다.
별거 아닌 기능이라고 할 수도 있겠으나, Block 한개 에러난 것 때문에 전체 데이터파일을 복구하려면 다소 부담스러운데, 이렇게 간단하게 복구할 수 있는 점에서는 매우 유용할 수 있습니다.
이 Block Corruption 복구 기능은 의외로 다른 DBMS 에서는 지원되지 않는 경우가 많습니다.
'IT관련' 카테고리의 다른 글
서버 2대에 Oracle 19c RAC 설치하기 (Install Grid Infrastructure) - DB 이중화 구성 (0) | 2021.09.15 |
---|---|
Jmeter 에서 Oracle Database 연결 사용방법 (무료 부하테스트툴) (0) | 2021.09.14 |
오라클 ORA-00060 데드락(Deadlock) 에러 확인/조치 방법 (0) | 2021.08.15 |
서버간 passwordless SSH 접속이 잘되는데, Oracle RAC 설치시 에러가 나는 경우 INS-06006, INS-06009, INS-44015, INS-44000 (0) | 2021.07.31 |
Oracle RAC Grid, CRS 설치를 위한 Response File 샘플 템플리트 파일 (0) | 2021.07.09 |