분류 전체보기 (328)
.NET (111)
S/W tip (35)
etc (63)
DB (34)
HOT item~! (48)
Disign pettens (4)
UX (6)
나의 S/W (2)
개발관련 이슈 (16)
Diary (1)
웹플러스 (1)
calendar
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
tags
archive
link
ColorSwitch 00 01 02

 오라클 DB를 사용중 delete문을 잘못 이용하여 지워야 하지 말아야 할 데이터를 지웠을 경우..
거기다가 commit 까지 완료했을 경우 다행이 복구 할 수 있는 방법이 존재했다.

SELECT * FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '30' MINUTE);


위의 명령어를 사용하면 TEST 테이블에 30분전의 상태를 보여주게 된다.
만약 DATA를 삭제한 시간이 30분이 지나지 않았다면 삭제하기 전의 DATA를 확인 할 수 있을 것이다.
그렇다면 위의 명령어를
서브쿼리로 하여 INSERT 해주면 된다.

INSERT INTO TEST
SELECT * FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '30' MINUTE);


이렇게 하면 DATA가 30분전 상태로 복구 될 것이다.
정확하진 않지만 Oracle에서 허용하는 시간은 2시간 이나 3시간 정도라고 하는것 같다.
그 이후에는 복구하고 싶어도 복구 할 수 없다는 뜻이다.
최대한 빠른 시간에 구하는 것이 안전하고, 처음부터 쿼리와 Data를 잘 확인하여 이런일이 발생하지 않게 하는것이 가장 좋겠다.

 

원문링크 : http://jinuws.tistory.com/entry/Oracle-commit-데이터-복구


articles
recent replies
recent trackbacks
notice
Admin : New post