Skip to content

Oracle RMAN 备份

RMAN 简介

  • RMAN(Recovery Manager):Oracle 提供的专业备份恢复工具
  • 核心功能:备份、恢复、验证、管理备份集
  • 优势:支持增量备份、压缩备份、加密备份、备份验证
  • 适用场景:各种规模的 Oracle 数据库,尤其是生产环境

RMAN 配置

基本配置

sql
-- 配置备份保留策略
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

-- 配置默认设备类型
CONFIGURE DEFAULT DEVICE TYPE TO DISK;

-- 配置备份位置
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\\backup\\%U';

-- 配置控制文件自动备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;

-- 配置控制文件自动备份位置
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\\backup\\controlfile_%F';

高级配置

sql
-- 配置备份压缩
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;

-- 配置并行度
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

-- 配置归档日志删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

-- 配置加密
CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES256';

RMAN 备份类型

完全备份

sql
-- 完全备份数据库
BACKUP DATABASE PLUS ARCHIVELOG;

-- 完全备份数据库到指定位置
BACKUP DATABASE PLUS ARCHIVELOG FORMAT 'D:\\backup\\full_%U';

-- 完全备份并删除已备份的归档日志
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

增量备份

sql
-- 级别 0 增量备份(相当于完全备份)
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;

-- 级别 1 差异增量备份
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;

-- 级别 1 累积增量备份
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE PLUS ARCHIVELOG;

归档日志备份

sql
-- 备份归档日志
BACKUP ARCHIVELOG ALL;

-- 备份归档日志并删除
BACKUP ARCHIVELOG ALL DELETE INPUT;

-- 备份特定范围的归档日志
BACKUP ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 200;

表空间备份

sql
-- 备份特定表空间
BACKUP TABLESPACE SYSTEM, SYSAUX, UNDOTBS1;

-- 备份用户表空间
BACKUP TABLESPACE USERS, APPS;

数据文件备份

sql
-- 备份特定数据文件
BACKUP DATAFILE 1, 2, 3;

-- 备份特定数据文件(按名称)
BACKUP DATAFILE 'D:\\ORADATA\\PROD\\SYSTEM01.DBF';

控制文件备份

sql
-- 手动备份控制文件
BACKUP CURRENT CONTROLFILE;

-- 备份控制文件到指定位置
BACKUP CURRENT CONTROLFILE FORMAT 'D:\\backup\\controlfile_%F';

-- 备份控制文件和服务器参数文件
BACKUP CURRENT CONTROLFILE PLUS SPFILE;

服务器参数文件备份

sql
-- 备份服务器参数文件
BACKUP SPFILE;

-- 备份服务器参数文件到指定位置
BACKUP SPFILE FORMAT 'D:\\backup\\spfile_%U';

RMAN 备份策略

小型数据库(< 50GB)

  • 周日:级别 0 增量备份(完全备份)
  • 周一至周六:级别 1 差异增量备份
  • 每天:归档日志备份(每 4 小时)

中型数据库(50GB - 500GB)

  • 周日:级别 0 增量备份
  • 周一、周三、周五:级别 1 累积增量备份
  • 周二、周四、周六:级别 1 差异增量备份
  • 每天:归档日志备份(每 2 小时)

大型数据库(> 500GB)

  • 每月第一天:级别 0 增量备份
  • 每周日:级别 1 累积增量备份
  • 周一至周六:级别 1 差异增量备份
  • 每天:归档日志备份(每 1 小时)

RMAN 备份监控与管理

查看备份状态

sql
-- 查看备份作业状态
SELECT * FROM V$RMAN_BACKUP_JOB_DETAILS ORDER BY START_TIME DESC;

-- 查看备份集信息
SELECT * FROM V$BACKUP_SET;

-- 查看备份片信息
SELECT * FROM V$BACKUP_PIECE;

-- 查看备份的文件信息
SELECT * FROM V$BACKUP_DATAFILE;

管理备份

sql
-- 列出所有备份
LIST BACKUP;

-- 列出数据库备份
LIST BACKUP OF DATABASE;

-- 列出归档日志备份
LIST BACKUP OF ARCHIVELOG ALL;

-- 删除过期备份
DELETE OBSOLETE;

-- 删除指定备份
DELETE BACKUPSET 123;

-- 交叉验证备份
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;

-- 删除失效备份
DELETE EXPIRED BACKUP;

RMAN 备份最佳实践

备份策略

  • 制定明确的备份计划:包括备份类型、频率、存储位置
  • 结合使用增量备份:减少备份时间和存储空间
  • 定期执行完全备份:作为增量备份的基础
  • 备份归档日志:确保可以恢复到任意时间点

性能优化

  • 合理设置并行度:根据CPU核心数和I/O性能
  • 使用备份压缩:减少存储空间和备份时间
  • 分散备份到多个位置:提高I/O性能
  • 避开业务高峰期:减少对生产系统的影响

安全性

  • 启用控制文件自动备份:防止控制文件丢失
  • 使用备份加密:保护敏感数据
  • 备份到异地存储:防止本地灾难
  • 实施访问控制:限制RMAN操作权限

验证与测试

  • 定期验证备份:确保备份可用
  • 测试恢复流程:验证备份的可恢复性
  • 监控备份状态:及时发现备份失败
  • 文档化备份策略:确保备份操作有章可循

常见问题(FAQ)

Q1: RMAN 备份失败如何处理?

A1: 首先查看错误信息,常见原因包括:

  • 存储空间不足:检查备份目标位置的空间
  • I/O 错误:检查存储设备和网络连接
  • 权限问题:确保 RMAN 有足够的权限
  • 数据库问题:检查数据库状态和 alert 日志

Q2: 如何提高 RMAN 备份性能?

A2: 可以通过以下方式提高性能:

  • 增加并行度:`CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
  • 使用备份压缩:`CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;
  • 分散 I/O:使用多个通道备份到不同位置
  • 使用 ASM:提高存储性能

Q3: 什么是 RMAN 备份集和镜像副本?

A3: 备份集是 RMAN 创建的逻辑结构,包含一个或多个数据文件的备份片段,支持压缩和增量备份。镜像副本是数据文件的精确副本,相当于操作系统级别的备份,恢复速度更快但占用空间更大。

Q4: 如何恢复 RMAN 备份?

A4: 基本恢复步骤:

  1. 启动数据库到挂载状态:`STARTUP MOUNT;
  2. 执行恢复命令:`RESTORE DATABASE;
  3. 应用归档日志:`RECOVER DATABASE;
  4. 打开数据库:`ALTER DATABASE OPEN;

Q5: 如何配置 RMAN 备份到磁带?

A5: 需要配置介质管理库(MML),然后:

  1. 安装并配置磁带库软件
  2. 配置 RMAN 使用磁带设备:`CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
  3. 配置磁带通道:`CONFIGURE CHANNEL DEVICE TYPE SBT_TAPE PARMS 'SBT_LIBRARY=...';
  4. 执行备份:`BACKUP DATABASE PLUS ARCHIVELOG;