ORA-01578: ORACLE data block corrupted
Block Corruption 이 발생할 경우 위 같은 에러 발생
Block 장애
물리적 장애 - Physical corruption / Media corruption
database에서 해당 블록을 인식할 수 없는 경우
발생 즉시 자동으로 체크하도록 설정되어 있다.
백업에 대한 checksum 값이 틀리거나 없을 경우, 블록 헤더부분이 손상됬을 경우 발생
운영 중에 파일을 복사하거나 해당 데이터 블록이 손상될 경우 많이 발생하는 장애
논리적 장애보다 더 치명적인 장애
논리적 장애 - Logical corruption
데이터에 문제가 있는 경우
트랜잭션 도중에 중단되어 계속 lock이 설정된 경우, 블록 총 사용량과 실제 블록 크기가 다를 경우
대부분 경우 블록에서 에러가 발견되면 발견한 시점에 해당 블록에 에러가 났다는 표시를 해둠
그 블록이 완전히 복구 될 때까지는 사용하지 않게 된다.
bad block 이후의 블록들은 읽지 못하기 때문에
고장난 블록 건너띄고 나머지는 읽을 수 있게 하는 복구 방법이 있음
모든 Block Corruption Recovery는 정상적인 백업 파일을 복원한 후 복구하는 것
Block Corruption이 발생했을 경우에도 정상적인 백업이 없으면 복구 불가능!
RMAN으로도 복구 가능
하짐나 백업 파일이 없으면 복구 불가능하다
완전한 백업 파일이 있을 경우 백업파일을 사용해 덮어쓴 다음 필요하면 archive log를 이용해 복구
DBVERIFY
DBMS_REPAIR
백업 없이도 recover 가능
BBED
고장난 블록 데이터 까지 살릴수 있는 복구 방법
1. 정상적인 백업 사용해 RMAN으로 복구
sqlplus 에서 recover 명령어로 복구가 되지 않을 경우
RMAN에서 복구 가능
기본적으로 recover 명령어 수행시 flashback log에서 완전한 블록 복사본을 찾고 없으면
RMAN backup file 에서 완전한 블록을 찾아 해당 블록에 대한 정보로 복구
RMAN> run {
2> restore tablespace ts_b ;
3> recover tablespace ts_b ;
4> sql 'alter tablespace ts_b online' ;
5> }
당구장
백업파일이 문제가 있는지 조회하는 방법
RMAN> run {
2> allocate channel c1 type disk ;
3> backup validate database ;
4> }
백업 파일에 문제가 있다면
v$backup_corruption, v$database_block_corruption 뷰를 조회하면
장애난 블록의 내용을 조회 할 수 있음
2. sqlplus recover 명령어로 복구
> recover datafile ' ' ;
recover datafile 명령어는 block recovery 기능도 일부 포함하고 있어서
block corruption이 발생할 때 사용하면 유용함
recover datafile로 복구 불가능할 경우 RMAN recover...block 명령어로 복구
11g부터는는 corruption 된 블록을 RMAN이 list로 확인해서 한꺼번에 전부 recover 할 수 있음
RMAN> recover corruption list ;
3. recover...block 명령어로 복구 (11g부터 가능)
일반적으로 Block Corruption은 백업된 정상적인 백업 파일을 복원 한 후에 해당 데이터 파일을 recover 함
정상적으로 백업된 백업 파일이 없을 경우는 복구 할 수 없는데
RMAN의 Block Recovery 기능을 활용해서 복구 할 수 있다.
RMAN> recover datafile # block # ;
그런데 막상 복구가 안되었음..
이유가 뭘까......??
흐음..
RMAN Block Recovery이 가능한 이유:
정상적인 백업 파일에서 장애 난 블록을 가져온 후 redo log 정보를 이용해 recovery함
즉, 정상적인 백업 없이는 Block Recovery 기능 사용할 수 없음.
11g RMAN New Feature 1
Data Recovery Advisor
RMAN> list failure ;
어떤 에러가 발생했는지 에러 내역을 보여줌
좀더 정확한 내용을 확인하려면
RMAN> list failure # detail ;
# = failure ID
RMAN> advise failure # ;
이 명령어를 통해 Data Recovery Advisor가 원인을 찾고
에러를 해결할 수 있는 Repare script와 복구 방법을 제시함
Repare script는 vi로 열어서 볼수도 있지만
RMAN> repair failure preview ;
명령어를 통해서 바로 볼수도 있다.
Data Recovery Advisor를 통해 복구하는 명령어는
RMAN> repair failure
YES 라고 입력해주면 알아서 Repare script를 사용해 복구 시작함
복구 원리나 방법을 몰라도 Data Recovery Advisor가 알아서 방법도 알려주고 복구도 가능
하지만 물리적인 장애만 복구 가능, 논리적인 장애는 복구 할 수 없다.
11g RMAN New Feature 2
Database 사전 예방 점검 기능
데이터베이스 장애가 발생하기 전에 사전에 예방 점검하는 기능
뭐.. 별로 쓰진 않음..
전체 데이터베이스 검사
RMAN> validate database ;
특정 테이블스페이스 검사
RMAN> validate tablespace T/S명 ;
특정 데이터 파일 검사
RMAN> validate datafile # ;
데이터파일의 특정 블록만 검사
RMAN> validate datafile # block # ;
'오라클 백업/복구' 카테고리의 다른 글
ASM - Automatic Storage Management (0) | 2013.02.23 |
---|---|
RMAN 백업으로 다른 서버에서의 DB 응급 복구 (0) | 2013.02.21 |
RMAN - 복구 (불완전 복구) (0) | 2013.02.19 |
RMAN - 복구 (완전 복구) (0) | 2013.02.19 |
RMAN - 백업 (0) | 2013.02.19 |