테이블스페이스를 과거 시점으로 되돌리기(TSPITR)
OracleRMAN명령어
-- 1) Is the tablespace self-contained (SQL, on the target DB):
EXEC DBMS_TTS.TRANSPORT_SET_CHECK(ts_list => 'USERS', incl_constraints => TRUE, full_check => TRUE);
SELECT * FROM transport_set_violations;
-- 2) Objects created AFTER the target time that TSPITR will lose:
SELECT owner, name, tablespace_name,
TO_CHAR(creation_time,'YYYY-MM-DD HH24:MI:SS') AS created
FROM ts_pitr_objects_to_be_dropped
WHERE tablespace_name = 'USERS'
AND creation_time > TO_DATE('2026-01-15 03:00:00','YYYY-MM-DD HH24:MI:SS');
# 3) RMAN: with an automatic auxiliary instance
RECOVER TABLESPACE users
UNTIL TIME "TO_DATE('2026-01-15 03:00:00','YYYY-MM-DD HH24:MI:SS')"
AUXILIARY DESTINATION '/u03/aux';
# 4) The tablespace is left OFFLINE: take a backup first, then bring it online
BACKUP TABLESPACE users;
ALTER TABLESPACE users ONLINE;하는 일
RMAN이 임시 auxiliary 인스턴스에서 SYSTEM/UNDO/SYSAUX와 대상 테이블스페이스를 요청한 시점까지 복구한 후 transportable tablespace로 대상 데이터베이스에 다시 연결한다. 데이터베이스의 나머지는 현재 상태를 유지한다.
사용 시점
잘못된 배치 작업이나 잘못된 DROP/TRUNCATE가 하나의 테이블스페이스(또는 자체 완결적인 테이블스페이스 집합)의 데이터만 손상시켰고 flashback 옵션으로 충분하지 않을 때.
주의
해당 테이블스페이스에서 이루어진 모든 변경과 대상 시점 이후 생성된 모든 객체가 손실된다. 테이블스페이스 집합은 자체 완결적이어야 한다(다른 테이블스페이스에 인덱스/테이블, 파티션, LOB, FK가 없어야 함). SYSTEM, UNDO 또는 SYS 객체를 포함하는 테이블스페이스에는 사용할 수 없다. TSPITR 후 해당 테이블스페이스의 이전 백업은 사용할 수 없으므로 즉시 백업한다. AUXILIARY DESTINATION에는 SYSTEM+SYSAUX+UNDO+대상 테이블스페이스만큼의 여유 공간이 필요하다.