여름엔 시원한 아이스아메리카노

Oracle 데이터베이스에서 실수로 데이터를 삭제하거나 변경했을 때, TIMESTAMP를 활용하면 특정 시점의 데이터를 빠르게 복구할 수 장점이 있습니다. 오늘으 Oracle 데이터 복구와 TIMESTAMP의 활용하는 방법에 대해 알아보겠습니다.

 

1. Oracle 데이터 복구 개요

Oracle에서 데이터 복구를 수행하는 방법은 아래와 같은 여러가지 방법이 있습니다.

  • FLASHBACK 기능 활용 (FLASHBACK TABLE, FLASHBACK QUERY)
  • UNDO 테이블스페이스 사용
  • 로그파일(REDO LOG) 및 백업을 활용한 복구
  • TIMESTAMP를 이용한 특정 시점 데이터 조회 및 복원

이 중 TIMESTAMP를 이용하면 데이터가 변경되기 이전의 특정 시점 데이터를 조회하고, 이를 복구할 수 있어 실무에서 종종 활용하고 있습니다.

2. TIMESTAMP를 활용한 데이터 복구 방법

Oracle에서 TIMESTAMP를 이용한 데이터 복구는 크게 다음과 같은 방법으로 수행할 수 있습니다.

방법설명
AS OF TIMESTAMP 특정 시점의 데이터를 조회 및 복구
FLASHBACK TABLE 특정 테이블을 과거 상태로 복원
FLASHBACK QUERY 특정 시점의 데이터를 조회하여 수동 복구
UNDO 활용 최근 변경된 데이터를 롤백
RMAN 백업 데이터 파일 및 아카이브 로그를 이용한 복구

3. AS OF TIMESTAMP를 활용한 데이터 복구

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기능 꼭! 알아놓으시면 도움이 되실겁니다.

 

4. FLASHBACK TABLE을 이용한 복구

FLASHBACK TABLE 명령어를 사용하면 테이블 전체를 특정 시점으로 되돌릴 수 있습니다.

FLASHBACK TABLE 기본 문법

FLASHBACK TABLE employees TOTIMESTAMP (SYSTIMESTAMP -INTERVAL'30'MINUTE);

📌 설명:30분 전 상태로 employees 테이블을 복원합니다.

🔹 주의사항

  • FLASHBACK TABLE을 사용하려면 ROW MOVEMENT가 활성화되어 있어야 합니다.
  • 실행 전 테이블 상태를 확인하세요.

ROW MOVEMENT 활성화 방법

ALTERTABLE employees ENABLE ROW MOVEMENT;

 

5. 특정 시점의 데이터를 복원하는 방법 (FLASHBACK QUERY)

테이블을 통째로 복원할 수 없을 때, 특정 시점의 데이터를 조회하여 복원하는 방법도 있습니다.

과거 데이터를 조회하여 복구

INSERTINTO employees SELECT*FROM employees ASOFTIMESTAMP (SYSTIMESTAMP -INTERVAL'12'HOUR) WHERE employee_id =102;

📌 설명:12시간 전 상태의 employee_id = 102 데이터를 복구합니다.

삭제된 데이터 복구 (UNDO 활용)

SELECT*FROM employees VERSIONS BETWEENTIMESTAMP (SYSTIMESTAMP -INTERVAL'2'HOUR) AND SYSTIMESTAMP WHERE employee_id =103;

📌 설명:2시간 전부터 현재까지의 employee_id = 103의 변경 이력을 조회합니다.

6. 데이터 복구를 위한 UNDO 테이블스페이스 활용

Oracle의 UNDO 테이블스페이스를 활용하면 최근 변경된 데이터를 쉽게 복원할 수 있습니다.

UNDO를 이용한 복구 방법

ROLLBACK;

📌 설명:트랜잭션이 완료되지 않은 경우, ROLLBACK을 사용하여 변경 내용을 되돌릴 수 있습니다.

UNDO 테이블을 이용한 특정 시점 복구

SELECT*FROM employees VERSIONS BETWEENTIMESTAMP (SYSTIMESTAMP -INTERVAL'1'HOUR) AND SYSTIMESTAMP;

📌 설명:1시간 전부터 현재까지의 데이터 변경 사항을 조회할 수 있습니다.

7. RMAN을 활용한 데이터 복구 (백업이 있는 경우)

만약 데이터가 심각하게 손상되었거나 삭제되었을 경우, RMAN(Recovery Manager)을 사용하여 복구할 수 있습니다.

RMAN을 활용한 데이터 파일 복구

RMAN> RESTORE DATABASE; RMAN> RECOVER DATABASE;

📌 설명:기존에 백업된 데이터를 이용하여 전체 데이터베이스를 복원합니다.


8. TIMESTAMP를 활용한 복구 정리

복구 방법사용 목적주요 명령어
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;

9. 마무리

Oracle 데이터베이스에서 실수로 데이터를 삭제하거나 변경했을 경우, TIMESTAMP와 FLASHBACK 기능을 활용하면 비교적 간단하게 복구할 수 있습니다. 
특히, 데이터 손실을 방지하려면 주기적인 백업 및 UNDO 테이블스페이스 관리가 중요합니다.

반응형