IT STUDY LOG

[Oracle] DML - FLASHBACK 기능 본문

computer science/database

[Oracle] DML - FLASHBACK 기능

roheerumi 2023. 9. 1. 16:55

# 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;
Comments