IT STUDY LOG
[Oracle] DML - FLASHBACK 기능 본문
# FLASHBACK
- USER의 논리적인 오류 보완하는 기능
- COMMIT을 하더라도 ORACLE 롤백 대비를 위해 변경 전 데이터를 별도로 관리하고 있으므로, ORACLE에서 지정된 시간 내에 복구할 수 있음
삭제 복원
-- 삭제 후 커밋
SELECT *
FROM emp;
DELETE emp;
COMMIT;
-- emp 테이블의 현재 시점의 데이터를 읽음
SELECT *
FROM emp;
-- emp 테이블에서 과거 시점의 데이터를 읽음
-- ① 명시적으로 시간 지정
SELECT *
FROM emp AS OF TIMESTAMP TO_DATE('2023/09/01 16:35:00', 'yyyy/mm/dd hh24:mi:ss');
-- ② 현재 시간 계산
SELECT *
FROM emp AS OF TIMESTAMP SYSDATE - 10/1440
WHERE deptno = 30;
INSERT INTO emp
(SELECT * FROM emp AS OF TIMESTAMP SYSDATE - 10/1440);
COMMIT;
변경 복원
-- 변경 후 커밋
UPDATE dept
SET dname = 'SALES_FAULT';
COMMIT;
SELECT *
FROM dept;
-- 과거로 되돌리기
SELECT *
FROM dept AS OF TIMESTAMP SYSDATE - 10/1440;
UPDATE dept d1
SET (dname, loc_code) = (SELECT dname, loc_code
FROM dept AS OF TIMESTAMP SYSDATE - 10/1440 d2
WHERE d1.deptno = d2.deptno);
SELECT *
FROM dept;
'computer science > database' 카테고리의 다른 글
[Oracle] DML (0) | 2023.09.01 |
---|---|
[Oracle] 분석함수 (0) | 2023.09.01 |
[Oracle] 서브쿼리 - INLINE 뷰, WITH 구문 (0) | 2023.09.01 |
[Oracle] 서브쿼리 - 다중행/다중열/상호연관 서브쿼리 및 기타 서브쿼리 (0) | 2023.09.01 |
[Oracle] 서브쿼리 - 단일행/단일열 서브쿼리 (0) | 2023.09.01 |
Comments