SKIP TABLESPACE 是命令级参数,仅对当前 BACKUP 语句生效,不通过 CONFIGURE 影响全局;必须显式写在 BACKUP 命令中,且恢复时需对应使用 RESTORE ... SKIP TABLESPACE 或显式指定表空间。
SKIP TABLESPACE 必须写在 backup 命令里,不能靠 configure 掩盖
rman 的 skip tablespace 是一个**命令级参数**,只对当前 backup 语句生效,和 configure exclude for tablespace 完全无关。很多人误以为配置了 exclude 就能“全局跳过”,结果备份时仍包含目标表空间——因为 configure exclude 只影响 backup database,而对 backup tablespace 或 backup archivelog 无效,且不作用于已显式指定的表空间。
常见错误现象:RMAN-03009 报错后跟着大量数据文件被备份,明明想跳过 EXAMPLE 却没生效。
- 正确写法必须是:
BACKUP DATABASE SKIP TABLESPACE(EXAMPLE, USERS) -
CONFIGURE EXCLUDE FOR TABLESPACE 'EXAMPLE'是另一套机制(Oracle 12c+ 推荐用EXCLUDE TABLESPACE),它和SKIP TABLESPACE不兼容,混用可能导致行为不可预测 - 若同时执行了
CONFIGURE EXCLUDE和带SKIP TABLESPACE的备份,后者优先级更高,但仅限该次命令
SKIP TABLESPACE 和 EXCLUDE TABLESPACE 的关键区别
SKIP TABLESPACE 是 Oracle 10g 起就支持的兼容性方案;EXCLUDE TABLESPACE 是 12c 引入的更语义清晰的替代语法,两者功能相似但底层处理不同。
使用场景差异:
-
SKIP TABLESPACE:适合跨版本脚本、灾备快速止损(如临时跳过故障表空间);不改变 RMAN 配置,无残留风险 -
EXCLUDE TABLESPACE:适合长期策略(如始终排除测试表空间),配置后所有后续BACKUP DATABASE自动生效;但需注意CONFIGURE EXCLUDE对BACKUP AS COPY和DUPLICATE也生效,容易误伤 - 性能上无明显差别,但
EXCLUDE在 catalog 同步阶段就过滤,略早于SKIP的运行时判断
跳过表空间后,恢复时会出问题吗
会,而且问题很隐蔽:RMAN 备份时跳过某表空间,不代表恢复时能自动忽略它。如果执行 RESTORE DATABASE,RMAN 会尝试还原所有数据文件——包括那些没进备份集的表空间文件,直接报 ORA-19573: cannot obtain exclusive enqueue for datafile 或 ORA-01157。
必须显式控制恢复范围:
- 用
RESTORE DATABASE SKIP TABLESPACE(EXAMPLE)—— 注意:这个SKIP TABLESPACE是 restore 阶段的独立参数,和 backup 阶段不共享 - 或改用
RESTORE TABLESPACE SYSTEM, SYSAUX, UNDOTBS1显式列出要还原的表空间(推荐,更可控) - 如果目标库需要 open,被跳过的表空间必须处于
OFFLINE DROP状态,否则RECOVER DATABASE会卡住
最容易被忽略的三个细节
实际运维中,以下三点导致最多“备份跳过了,但恢复失败”类事故:
- 备份时用了
SKIP TABLESPACE,但验证时用RESTORE VALIDATE DATABASE没加对应SKIP TABLESPACE,验证直接失败,误判备份无效 - 跳过的表空间里有全局临时表(
GLOBAL TEMPORARY TABLE),虽然不需备份,但若其所在表空间被设为READ ONLY,可能引发ORA-14402类错误,需提前检查 -
SKIP TABLESPACE不跳过 undo/rollback 表空间,也不跳过 system 表空间——这两类表空间即使离线或只读,RMAN 仍强制要求参与备份,否则报错退出


















