DBAtlas · 数据库运维图谱

将表空间恢复到过去某个时间点(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 在临时辅助实例中将 SYSTEM/UNDO/SYSAUX 和目标表空间恢复到指定时间,然后通过可传输表空间将其插回目标数据库;数据库其余部分保持最新。

适用场景

当错误的批处理作业或误操作的 DROP/TRUNCATE 只损坏了一个表空间(或一组自包含的表空间)中的数据,且 flashback 选项不足以解决时。

注意

该表空间中在目标时间之后所做的所有更改以及创建的所有对象都会丢失。表空间集必须是自包含的(索引/表、分区、LOB 或 FK 不能位于其他表空间)。不能用于包含 SYSTEM、UNDO 或 SYS 对象的表空间。TSPITR 后,该表空间之前的备份不可用;请立即备份。AUXILIARY DESTINATION 需要足够容纳 SYSTEM+SYSAUX+UNDO+目标表空间的空闲空间。

在 DBAtlas 中打开 →

相关内容