본문 바로가기

데이터베이스/오라클

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


 이번글에서 알아볼 Transaction Query우리가 이미 행한 트랜잭션에 대해서 Undo 데이터를 통한 Undo SQL 문장을 보여줍니다.
트랜잭션 쿼리를 이용하기 위해서는 우선 사용할 계정에 대해서 'select any transaction' 권한이 존재해야 합니다. 
권한을 확인후 진행합니다. 없다면 다음과 같이 부여합시다.

 관리자 권한으로 접속후 다음을 입력합니다.
SQL> GRANT SELECT ANY TRANSACTION TO hr;

권한 관련 글을 다음 링크를 참고하시면 되겠습니다.
권한 설정 관련 글 확인하기 



우선 상황을 만들기 위해서 다음과 같이 업데이트를 여러번 해줍니다. 

[실행화면]



[실행화면]


[실행화면]


[실행화면]




 같은 로우(ROW)에 대해서 여러번 업데이트를 진행하고 commit작업을 해줬습니다.
그렇다면 Version Query 를 통해 scn 을 조회해 보겠습니다.

[실행화면]



 살펴보니 맽 밑으로부터 작업이 되었군요. scn값 1264877부터 1264966까지 Tranaction Query로 Undo 데이터를 조회해보겠습니다.



 FLASHBACK_TRANSACTION_QUERY는 뷰이기 때문에 FROM에 위치합니다.
마지막 UNDO_SQL에는 데이터를 되돌릴 수 있는 SQL 문이 저장되어 있습니다.
그래도 써주게 되면 한단계씩 복구가 가능합니다.

[실행화면]



UNDO_SQL을 보시게 되면 ROWID가 표시되는데 ROWID로 통해서 해당 로우에 직접 접근(Access) 합니다.


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