본문 바로가기

데이터베이스/오라클

[오라클]플래쉬백(Flashback)을 통한 데이터 복구 -1 (ROW LEVEL FLASHBACK, Flashback Verision Query)


 우선, 다음과 같이 연습할 테이블을 간단히 만듭니다.
 
[실행화면]



그리고 나서 자료를 넣습니다. 저는 두개의 로우(ROW)를 입력했습니다.

[실행화면]



 커밋(commit)을 해준후 테이블을 확인합니다.




 일본 국가에 속해있는 'ando'의 나이를 수정해 보겠습니다.

[실행화면]




 그리고 커밋을 해준후, 다시 테이블을 확인해서 업데이트가 이상없이 되었는지 확인해 봅니다.




자, 여기서부터가 플래쉬백을 통한 복구 과정입니다. 저는 방금 수정했던 'ando'의 나이를
이전 데이터로 돌리고 싶어합니다. 하지만 아무것도 모르고 단지 바뀌었다는 사실만을 알고 있습니다.

플래쉬백 버전 쿼리(Flashback Version Query)를 통해서 다음과 같이 변경이력을 탐색합니다.

[실행화면]



 보시게 되면 아래로부터가 변경된 순서입니다. 간단히 보면 OPE 부분에는 'U' 와 'I'가 있는데,
이때 'U'는 업데이트(UPDATE) 작업을 했다는 뜻이고, 'I'는 삽입(INSERT) 작업을 했다는 뜻입니다.
참고로 삭제(DELETE)는 'D'로 표시 됩니다.

 그리고 밑의 INSERT 작업을 보시게 되면 '시작 SCN' 과 '종료 SCN' 값에서, 우리는 그 사이의 SCN값,
즉, 1252707~1252796 에서는 업데이트전 값인 34가 유지되는 것을 확인할 수 있구요,
 반대로 1252796 다음부터는 업데이트가 수행되서 29 값이 유지 되는 것을 볼 수 있습니다.
(END SCN 값이 NULL 이므로 지금 현재 유지되는 상태라고 이해해도 되겠습니다.)

 아무튼 이전데이터가 '34'라는 것을 VERSION QUERY를 통해 확인했습니다.



그렇다면 다음과 같이 업데이트를 해줍니다.

[실행화면]



 
도움 되셨다면 밑의 추천(손가락 표시)과 댓글 부탁드립니다.