본문 바로가기
컴퓨터/Oracle

[Oracle]Flashback 플래시백, Flashback drop

by TEATO 2014. 7. 14.
반응형

[Oracle]Flashback, Flashback drop 플래시백


실수로 중요한 데이터를 변경하고 커밋을 눌러버렸다...

이럴때 일시적으로 되돌아갈 수 있는 방법이 바로 플래시백 flashback입니다.

일시적으로 돌아가는것이기 때문에 돌아간뒤 데이터를 다른테이블에 저장해놓고

돌아와서 실제 테이블에 적용시켜주면 복구를 할 수 있죠 ㅎ

주의할점을 플래시백은 4시간정도 뒤 시간으로 돌아갈수 있지 하루정도 지나면 안됩니다. ㅎ


실습을 위해서 empno가 7839인 사원의 sal를 확인해보겠습니다. 20000이네요


돌아가기위해서 현재시간을 확인해보겠습니다.


sal을 반값으로 줄여버리고 커밋을 해버렸습니다.

이제 7839 사원은 연봉이 반절로 줄었네요 ㅋㅋㅋ


조회해보니 반절로 줄었습니다 ㅜ


플래시백을 사용하기위해선 이와같은 쿼리를 날려주셔야합니다.



연봉을 삭감하기전 시간으로 돌아가보겠습니다.



다시 연봉이 20000으로 돌아왔군요 ㅎ



이를 저장하기위해서 임시테이블을 만들어서 저장하겠습니다.


플래시백을 한뒤에는 테이블이 최종적으로 바뀐 뒤의 시점으로 다시 돌아가야합니다.

연봉을 삭감했을 시간으로 다시 돌아가겠습니다.

이제 임시로 만들었던 test테이블에 저장했던 데이터를 넣어주면 복구가 되겠죠~




Flashback drop

이번엔 Flashback drop을 알아보도록하겠습니다.

윈도우에서 파일을 지우면 휴지통에 들어가듯이 DBMS에서도

테이블을 지우면 휴지통에 들어가게 됩니다. 그래서 복구도 가능하죠~


임시로 테이블을 만들어서 지워보겠습니다.

TY라는 테이블을 만들고 지웠습니다.


user_recyclebin을 보시면 지원던 테이블 목록들이 들어가게 되있습니다.


테이블을 지웠기 때문에 테이블조회를 하자 오류가나죠 


지웠던 ty테이블을 살려보겠습니다.

위와같은 쿼리로 복구를 할 수 있습니다.


이제 테이블이 살아난것을 확인할 수 있죠


이것은 휴지통을 지우듯이 user_recyclebin에 있는 목록을 삭제하는 문법입니다.


예시로 하나 해보면 users 테이블스페이스에 해당하는 목록을 지워보겠습니다.

user_recyclebin을 조회하자 전부 삭제가 된걸 볼 수 있습니다.


플래시백기능 잘만 사용한다면 정말 유용하겠죠



반응형

댓글