Oracle 데이터베이스에서 실수로 데이터를 삭제하거나 변경했을 때, TIMESTAMP를 활용하면 특정 시점의 데이터를 빠르게 복구할 수 장점이 있습니다. 오늘으 Oracle 데이터 복구와 TIMESTAMP의 활용하는 방법에 대해 알아보겠습니다.
Oracle에서 데이터 복구를 수행하는 방법은 아래와 같은 여러가지 방법이 있습니다.
이 중 TIMESTAMP를 이용하면 데이터가 변경되기 이전의 특정 시점 데이터를 조회하고, 이를 복구할 수 있어 실무에서 종종 활용하고 있습니다.
Oracle에서 TIMESTAMP를 이용한 데이터 복구는 크게 다음과 같은 방법으로 수행할 수 있습니다.
AS OF TIMESTAMP | 특정 시점의 데이터를 조회 및 복구 |
FLASHBACK TABLE | 특정 테이블을 과거 상태로 복원 |
FLASHBACK QUERY | 특정 시점의 데이터를 조회하여 수동 복구 |
UNDO 활용 | 최근 변경된 데이터를 롤백 |
RMAN 백업 | 데이터 파일 및 아카이브 로그를 이용한 복구 |
Oracle의 AS OF TIMESTAMP 기능을 사용하면 특정 시점의 데이터를 조회할 수 있습니다. 이 기능은 FLASHBACK QUERY를 활용하여 데이터를 복원할 때 유용합니다.
SELECT*FROM employees AS OF TIMESTAMP (SYSTIMESTAMP -INTERVAL'1'HOUR);
📌 설명:1시간 전의 employees 테이블 데이터를 조회합니다.
INSERTINTO employees SELECT*FROM employees AS OF TIMESTAMP (SYSTIMESTAMP -INTERVAL'1'DAY) WHERE employee_id =101;
📌 설명:하루 전(1 DAY) 상태의 데이터를 가져와 다시 employees 테이블에 삽입합니다.
실무에서 간단하지만 유용한 TIMESTAMP기능 꼭! 알아놓으시면 도움이 되실겁니다.
FLASHBACK TABLE 명령어를 사용하면 테이블 전체를 특정 시점으로 되돌릴 수 있습니다.
FLASHBACK TABLE employees TOTIMESTAMP (SYSTIMESTAMP -INTERVAL'30'MINUTE);
📌 설명:30분 전 상태로 employees 테이블을 복원합니다.
🔹 주의사항
ALTERTABLE employees ENABLE ROW MOVEMENT;
테이블을 통째로 복원할 수 없을 때, 특정 시점의 데이터를 조회하여 복원하는 방법도 있습니다.
INSERTINTO employees SELECT*FROM employees ASOFTIMESTAMP (SYSTIMESTAMP -INTERVAL'12'HOUR) WHERE employee_id =102;
📌 설명:12시간 전 상태의 employee_id = 102 데이터를 복구합니다.
SELECT*FROM employees VERSIONS BETWEENTIMESTAMP (SYSTIMESTAMP -INTERVAL'2'HOUR) AND SYSTIMESTAMP WHERE employee_id =103;
📌 설명:2시간 전부터 현재까지의 employee_id = 103의 변경 이력을 조회합니다.
Oracle의 UNDO 테이블스페이스를 활용하면 최근 변경된 데이터를 쉽게 복원할 수 있습니다.
ROLLBACK;
📌 설명:트랜잭션이 완료되지 않은 경우, ROLLBACK을 사용하여 변경 내용을 되돌릴 수 있습니다.
SELECT*FROM employees VERSIONS BETWEENTIMESTAMP (SYSTIMESTAMP -INTERVAL'1'HOUR) AND SYSTIMESTAMP;
📌 설명:1시간 전부터 현재까지의 데이터 변경 사항을 조회할 수 있습니다.
만약 데이터가 심각하게 손상되었거나 삭제되었을 경우, RMAN(Recovery Manager)을 사용하여 복구할 수 있습니다.
RMAN> RESTORE DATABASE; RMAN> RECOVER DATABASE;
📌 설명:기존에 백업된 데이터를 이용하여 전체 데이터베이스를 복원합니다.
AS OF TIMESTAMP | 특정 시점 데이터 조회 | SELECT * FROM 테이블 AS OF TIMESTAMP |
FLASHBACK TABLE | 테이블을 특정 시점으로 복원 | FLASHBACK TABLE 테이블 TO TIMESTAMP |
FLASHBACK QUERY | 특정 시점 데이터 수동 복구 | SELECT * FROM 테이블 AS OF TIMESTAMP |
VERSIONS BETWEEN TIMESTAMP | 변경 이력 조회 | SELECT * FROM 테이블 VERSIONS BETWEEN TIMESTAMP |
UNDO 활용 | 최근 변경사항 롤백 | ROLLBACK |
RMAN 백업 | 백업을 이용한 복구 | RESTORE DATABASE; RECOVER DATABASE; |
Oracle 데이터베이스에서 실수로 데이터를 삭제하거나 변경했을 경우, TIMESTAMP와 FLASHBACK 기능을 활용하면 비교적 간단하게 복구할 수 있습니다.
특히, 데이터 손실을 방지하려면 주기적인 백업 및 UNDO 테이블스페이스 관리가 중요합니다.
오라클 DECODE 함수로 데이터 변환 쉽게 하기 (0) | 2025.03.05 |
---|---|
현재 사용자(SCHEMA)에서 특정 컬럼이 포함된 테이블 찾기 (0) | 2025.02.28 |
오라클 특정 컬럼 찾기, 특정 컬럼명 사용 테이블 찾기 (0) | 2024.02.28 |
[oracle]오라클 comment 추가 확인 삭제 하기 (0) | 2022.04.19 |