DBAtlas · 数据库运维图谱

Oracle 备份策略与自动化 (RMAN + Data Pump)

Oracle难度: 中级耗时: 60–120 分钟(不含首次 level 0 的时间)

为已安装的数据库建立长期、自动化的备份方案(故障时的恢复见另一篇指南:"使用 RMAN 进行 restore 与 recovery"):每周 level 0 + 每日 level 1(或每天全备)、频繁的归档日志备份、FRA 或独立目录、retention、压缩、加密、block change tracking 和并行。另外还有使用 wallet 的完整 expdp。完整的脚本(锁、日志、错误检查、电子邮件)通过 cron、systemd timer 或 DBMS_SCHEDULER 调度;包含每周 RESTORE VALIDATE 和维护。单实例、Oracle Restart 和 RAC(FRA 和 snapshot controlfile 位于 ASM,作业只在第一个打开的实例上运行)各有独立路径;OL/RHEL 7.9–9。可选:RMAN recovery catalog(CREATE CATALOG、REGISTER、通过 wallet 连接、catalog 自身的备份)以及每月 restore 演练(RESTORE … VALIDATE + PREVIEW 作业,在测试服务器上实际 restore)。

架构: 1 台服务器(单实例或 Oracle Restart)或 RAC(2–8 个节点)

开始之前

  • 数据库 … 已打开并已登记在 /etc/oratab 中;ORACLE_HOME 为 …。…数据库已注册到 Clusterware (srvctl config database -db …)。…
  • 已了解数据库的日志模式和 FRA 设置。如果 ARCHIVELOG 未开启,已为开启它安排了短暂停机(重启)。
  • 磁盘空间充足:FRA (…) 约需 … GB…,备份目录 (…) 约需 … GB……,dump 目录 (…) 约需 … GB…。该计算为粗略估算(见备注部分);备份空间必须与数据库磁盘分开。
  • cron (cronie) 已安装并在运行。作业通过属于 root 的 /etc/cron.d 文件以 oracle 用户身份运行;PAM (/etc/security/access.conf) 不阻止 oracle 的 cron 作业。
  • 已知 oracle 操作系统用户的口令(用于 DBMS_SCHEDULER credential),并且 $ORACLE_HOME/bin/jssu 为 setuid root(已执行 root.sh)。
  • 服务器可以发送电子邮件:本地 MTA (postfix) 已转发到中继服务器,或已为 mailx 配置 SMTP。
  • TDE keystore 已配置并处于打开状态 (v$encryption_wallet → OPEN)。keystore 口令及其备份保存在安全的地方:keystore 丢失后,加密备份将无法读取。
  • 许可符合要求:…并行和 block change tracking 在 Enterprise Edition 中提供…;… 压缩需要 Advanced Compression Option……;磁盘备份加密需要 Advanced Security Option……;Data Pump COMPRESSION=ALL 需要 Advanced Compression Option…。…在 Standard Edition 2 上 RMAN 以单通道运行;可以使用 BASIC 压缩。…
  • 已确定备份第二份副本的存放位置:磁带/MML、对象存储或另一台服务器。备份的唯一副本不得与数据库放在同一台服务器上。
  • OL/RHEL 7.9:19c 支持;软件用 yum 安装。OL7 的 Premier Support 已于 2024 年 6 月结束(Extended Support 仍在继续),RHEL 7 需要 Extended Life Cycle Support 订阅。新安装请优先选择 OL/RHEL 8–9。
  • FRA 位于 ASM 磁盘组 (…)…,所有实例看到的是同一个 FRA;每个实例的归档目标都是 USE_DB_RECOVERY_FILE_DEST…。

指南阶段

  • 准备 — 测量当前状态和容量 · 创建备份目录 · 配置 FRA · 开启 ARCHIVELOG 模式 · 开启 ARCHIVELOG 模式 (srvctl) · 准备 cron 和 oracle 用户的 cron 权限 …
  • 环境文件与 RMAN 配置 — 写入环境文件… (…)… · 启用 block change tracking · 写入 RMAN 配置文件 · 应用 RMAN 设置 · 按 retention 设置 control_file_record_keep_time
  • Recovery catalog(可选) — 在 catalog 数据库中创建 catalog 所有者 · 为 catalog 连接写入 TNS 文件 · 把 catalog 凭据加入 wallet · 创建 catalog schema (CREATE CATALOG) · 把数据库注册到 catalog (REGISTER DATABASE) · 备份 catalog 数据库
  • RMAN 命令文件与备份脚本 — 写入 level 0 命令文件 · 写入 level 1 命令文件 · 写入归档日志命令文件 · 写入每周验证与维护文件 · 写入每月 restore 演练文件 · 写入备份脚本 …
  • Data Pump 用户与 wallet — 创建导出用户和 directory 对象 · 创建 wallet 并添加凭据 · 把 wallet 复制到其他节点 · 写入 sqlnet.ora(仅供备份脚本使用) · 写入 tnsnames.ora(仅供备份脚本使用)… (…)… · 测试无口令连接
  • 首次备份(手动运行) — 执行首次 level 0 备份 · 测试归档日志备份 · 测试 level 1 备份 · 执行首次 Data Pump 导出 · 根据 RMAN 记录验证备份
  • 调度:cron — 写入 cron 文件 · 设置 cron 文件权限,移除旧的 crontab 块 · 用 cron 的环境手动测试 · 确认 cron 在执行作业
  • 调度:systemd timer — 写入服务和 timer 文件 · 启用 timer
  • 调度:DBMS_SCHEDULER — 创建操作系统 credential · 创建调度作业 · 立即运行一个作业进行测试
  • 维护与监控 — 运行一次每周验证与维护 · 运行一次 restore 演练 · 监控查询 · 把备份复制到服务器之外并测试恢复 · 在独立的测试服务器上实际 restore · 监控 catalog 中的备份历史
按您的环境打开分步计划 →