RMAN热备前提必须是数据库处于ARCHIVELOG模式,否则BACKUP DATABASE PLUS ARCHIVELOG会报ORA-00258错误;需用archive log list确认Database log mode为Archive Mode且Automatic archival Enabled,未启用则需shutdown immediate、startup mount、alter database archivelog、alter database open,并配置log_archive_dest_1指定归档路径;RMAN备份前应配置RETENTION POLICY、CONTROLFILE AUTOBACKUP、DEVICE TYPE DISK等参数以避免默认陷阱;全量备份推荐使用RUN块执行BACKUP AS COMPRESSED BACKUPSET DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG DELETE INPUT;备份后须用LIST BACKUP SUMMARY和VALIDATE BACKUPSET验证可用性,防止控制文件元数据过期导致“幽灵备份”。

确认数据库已开启归档模式
RMAN热备的前提是数据库必须处于 ARCHIVELOG 模式,否则 BACKUP DATABASE PLUS ARCHIVELOG 会直接报错 ORA-00258: manual archiving in NOARCHIVELOG mode not allowed。
以 oracle 用户执行:
sqlplus / as sysdba SQL> archive log list;
输出中必须含 Database log mode Archive Mode 和 Automatic archival Enabled。若未启用,需停库操作:
shutdown immediatestartup mountalter database archivelogalter database open
归档路径建议提前配置,避免默认写入 $ORACLE_HOME/dbs 导致空间不足:alter system set log_archive_dest_1='LOCATION=/u01/archivelog' scope=both;
配置RMAN基础参数再执行备份
不配置就直接 BACKUP DATABASE 虽能运行,但容易踩坑:备份片默认存到 $ORACLE_HOME/dbs(极小空间)、无自动控制文件备份、无保留策略、无法跨通道并行。
推荐先连 RMAN 并运行以下配置(只需一次,永久生效):
RMAN> CONNECT TARGET / RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4; RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/rman/%U.bkp' MAXPIECESIZE 2G;
关键点说明:
-
RECOVERY WINDOW比REDUNDANCY更贴近实际恢复需求,RMAN 会自动清理超过 7 天且无更晚备份依赖的旧备份 -
CONTROLFILE AUTOBACKUP ON是救命配置——哪怕控制文件损坏,也能从最近一次自动备份中恢复 -
MAXPIECESIZE 2G避免单个备份片过大,影响传输或磁带写入(尤其在 NFS 或某些云存储上)
执行全库备份命令及常见陷阱
标准全量备份命令如下(含归档日志清理):
RMAN> RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP AS COMPRESSED BACKUPSET
DATABASE
INCLUDE CURRENT CONTROLFILE
PLUS ARCHIVELOG DELETE INPUT;
RELEASE CHANNEL c1;
}
注意几个易错细节:
-
DELETE INPUT不是“删所有归档”,而是只删已被本次PLUS ARCHIVELOG成功备份过的归档;若某归档因权限/空间问题没被备份,它会被跳过,不会被删 -
AS COMPRESSED BACKUPSET压缩率通常 60–70%,但压缩过程增加 CPU 开销,高负载时段慎用 - 如果备份中途失败(如磁盘满),
RELEASE CHANNEL不会自动执行,残留通道可能阻塞后续作业,建议加EXIT或手动RELEASE - 不要用
BACKUP DATABASE省略PLUS ARCHIVELOG—— 这样只能恢复到上次全备时间点,丢失中间所有事务
验证备份是否真正可用
备份完成不等于可恢复。很多 DBA 只查 LIST BACKUP 就认为 OK,结果真出事时发现备份片损坏或路径不可读。
必须做两件事:
- 检查备份集状态:
LIST BACKUP SUMMARY;确认每条记录的STATUS是AVAILABLE,不是EXPIRED或UNAVAILABLE - 抽样校验物理完整性:
VALIDATE BACKUPSET n;(n是LIST BACKUP中的BS Key)—— 它不还原,只读取备份片头和块校验和,耗时短但能暴露磁盘坏道或传输截断问题
真正麻烦的是控制文件快照与实际备份元数据不一致,尤其在未使用恢复目录(catalog)而仅依赖控制文件时。控制文件保留时间默认仅 7 天(control_file_record_keep_time 参数),超期备份在 CROSSCHECK 后会变 EXPIRED,但磁盘上文件还在——这种“幽灵备份”最误事。


















