DELETE 복구 0 3 2,158

by 곰두리 [Oracle 기초] [2013.12.11 08:55:36]



DELETE 된 데이터를 시간이 많이 지나도 다시 복구할 수 있는 방법이 있을까요?

몇시간전으로 돌리는 쿼리는 아는데요.. 이것이 12시간이상이 지나면 조회가 않되네요.
by 강서꽃미남 [2013.12.11 09:56:23]
언두리텐션 시간이 지나가면 플래쉬백으로도 복구가 불가능합니다.
핫 백업 받은 본에 특정 시간까지의 아카이브 적용뿐이 없을 것 같은데요..

by Oracler [2013.12.11 11:50:09]
정확하게는 언두 리텐션 시간이 지나도 해당 트랜잭션의 언두데이터(언두 블록이겠죠)의 언두 세그먼트가 다른 트랜잭션에 의해 재사용되지 않았다면 언제든지 FLASHBACK 기술을 사용해서 되살릴 수가 있습니다.
그리고 언두 리텐션 보장(Undo Retention Guarantee)이 설정되어 있지 않은 상태에서 언두 세그먼트의 프리 공간이 부족하면 언두 리텐션 시간이 지나지 않아도 트랜잭션이 종료된 언두 세그먼트가 재사용되기 때문에 FLASHBACK이 실패하게 됩니다.

by Oracler [2013.12.11 11:57:02]
FLASHBACK으로 되살릴 수 없다면 불완전복구를 통해 해당 테이블의 데이터를 되살릴 수 밖에 없습니다.

불완전복구는 백업본을 불러들인 후 리두 로그 파일(필요하면 아카이브 로그 파일도 사용)을 읽어서 복구하되 리두 로그 파일을 해당 특정시간까지(이경우 해당 테이블이 DELETE 되기 전 시간이겠죠)만 읽고 복구를 멈추는 과정입니다. 따라서 불완전복구를 하게 되면 특정시간 이후의 DML, DDL 했던 내용은 다 사라지게 됩니다.

혹은 현재 DB를 복제한 뒤 복제된 DB를 불완전복구하여 해당 테이블을 살리고 그 테이블을 export나 expdp로 뽑아낸 뒤 원래 DB로 import 또는 impdp로 넣어주는 클론 DB를 이용하여 살릴 수도 있습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입