Oracle 11g增量备份变慢大概率因未启用块变更跟踪(BCT):需查v$block_change_tracking确认状态,ENABLED仅表示配置开启,真正生效须结合v$backup_datafile.used_change_tracking为YES及RMAN日志中“using change tracking file”验证。
oracle 11g 增量备份变慢,大概率不是数据量涨了,而是没开 block change tracking(bct)——它一关,rman 就得每次全扫描所有数据文件找变更块。
怎么确认 BCT 没开?看 v$block_change_tracking
别猜,直接查视图:
SELECT status, filename, bytes FROM v$block_change_tracking;
结果只有两种关键状态:
-
DISABLED或查询无返回 → BCT 根本没启用 -
ENABLED且filename非空 → 已启用,但还要验证是否真被 RMAN 用上
注意:ENABLED 不代表“正在生效”,比如路径不可写、磁盘满、权限不对,都会让后续备份静默降级回全扫描。
安全启用 BCT:路径、权限、存储位置三件事必须盯死
BCT 文件本身很小(几 MB),但放错地方会埋雷。常见翻车点:
- 路径不能指向
db_recovery_file_dest(FRA)——否则和归档日志抢空间,容易触发ORA-19809 - 目录必须 Oracle 用户可写,且所在文件系统有足够剩余空间(哪怕只写几 MB,也要防
ORA-19755) - 不能放在 ASM 的单副本磁盘组、NFS 挂载点或临时文件系统上——BCT 文件损坏不报错,RMAN 自动退化,排查时根本想不到
启用命令示例(路径按实际调整):
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/ORCL/bct.dbf';
执行后立即生效,无需重启实例;但当前已运行的 RMAN 会话不会自动切换,必须新开备份任务才走 BCT 路径。
RMAN 备份到底用没用 BCT?不能只看命令,得看日志和视图
BACKUP INCREMENTAL LEVEL 1 才走 BCT;LEVEL 0 全量备份完全不依赖它。验证是否命中,分两步:
- 加
SET DEBUG ON运行一次增量备份,日志里搜using change tracking file—— 出现即表示读取成功 - 查
v$rman_backup_job_details,对比INPUT_BYTES_DISPLAY和OUTPUT_BYTES_DISPLAY:如果前者远大于后者(比如输入 2TB、输出 50GB),说明跳过了大量未改块;若两者接近,BCT 可能失效,或数据修改率极高(少见) - 单次备份是否启用 BCT,看
v$backup_datafile.USED_CHANGE_TRACKING列,值为YES才算真正用了
注意:v$block_change_tracking 里的 ENABLED 状态是静态配置,而 v$backup_datafile.USED_CHANGE_TRACKING 是每次备份的实际行为记录——这是最可靠的判断依据。
BCT 文件损坏或丢失,RMAN 不报错,但备份会悄悄变慢
这是最容易被忽略的坑。BCT 文件损坏时,RMAN 不抛任何错误,只是默默放弃使用,退回全扫描模式。你只会发现“最近几次增量备份突然变慢”,却查不到报错日志,也看不到明显异常。
所以日常巡检不能只看 v$block_change_tracking.status,还得定期检查文件是否存在、Oracle 用户能否读写、所在文件系统空间是否健康。一旦发现备份耗时回升,优先验证 BCT 是否仍在被真实使用,而不是调通道数或压缩比。











