오라클 COMMIT 된 DML 조회 및 복구 방법
오라클의 FLASH BACK 기능 이라고 함
설정보기
sql> show parameter undo;
undo_management
undo_retention
undo_tablespace
DEFAULT 는 900초 라고 함
alter system set undo_retention = 1500 ; ' --1500초(25분)
를 통해 늘릴 수 있다고 함
15분 전 테이블 조회
SELECT *
FROM TEST
AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '15' MINUTE)
WHERE USER_ID = 'ITDI' ;
MINUTE
HOUR
DAY
Month
Year
(month, year는 입력은 가능하나 스냅샷 없다고 오류 발생함)
일단 이를 통해 당시 데이터를 조회 후 임시 테이블에 저장
INSERT INTO TEMP
SELECT *
FROM TEST
AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '15' MINUTE)
WHERE USER_ID = 'ITDI' ;
그 후 잘못 commit된 것을 찾아서 원복 시키면 될 듯 함
참고 url
http://www.itdi.co.kr/onuri/bbs/board.php?bo_table=04_2&wr_id=157
http://dearhwan.egloos.com/viewer/4092555
추가로 찾아본 것은 다음의 VIEW임
select *
from FLASHBACK_TRANSACTION_QUERY
;
Commit 실행된 시점과 테이블 명, SQL문을 조회할 수 있음
(범인 찾을 때 사용하면 유용할 것 같음)
참고 url