温馨提示×

Oracle在Linux上如何配置备份策略

小樊
43
2025-11-18 22:36:27
栏目: 云计算

Linux上Oracle备份策略配置指南

一 策略设计要点

  • 备份类型与频率
    • 全量备份:建议每周一次(如周日),作为恢复基线。
    • 增量备份:建议每日一次(级别1差异增量),缩短备份窗口并降低存储占用。
    • 归档日志:建议每小时备份一次,保证恢复点目标 RPO;备份后自动删除已备份的归档,避免堆积。
    • 控制文件与SPFILE:启用控制文件自动备份,随每次备份保留;必要时单独备份SPFILE。
  • 保留策略
    • 使用RMAN保留策略,二选一:按冗余(如REDUNDANCY 2)或按恢复窗口(如RECOVERY WINDOW OF 14 DAYS)。
  • 存储与目录
    • 规划备份根目录(如**/u01/backup**),并按类型分子目录(rman、logs、archive等),设置属主为oracle:oinstall、权限755
  • 通道与并行
    • 磁盘备份建议配置并行度(如PARALLELISM 4),并指定备份片命名格式,提升吞吐与可维护性。

二 环境准备与RMAN基础配置

  • 启用归档模式
    • 检查:SELECT log_mode FROM v$database;
    • 切换:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
    • 归档路径:ALTER SYSTEM SET log_archive_dest_1=‘LOCATION=/u01/archivelog’ SCOPE=BOTH;
  • 创建备份目录
    • mkdir -p /u01/backup/{rman,scripts,logs,archive}
    • chown -R oracle:oinstall /u01/backup && chmod -R 755 /u01/backup
  • RMAN永久参数(示例)
    • CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
    • CONFIGURE BACKUP OPTIMIZATION ON;
    • CONFIGURE DEFAULT DEVICE TYPE TO DISK;
    • CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
    • CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/%U’;
    • CONFIGURE CONTROLFILE AUTOBACKUP ON;
    • CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/u01/backup/rman/ctl_%F’;
  • 可选优化
    • 启用压缩备份:CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;
    • 增长控制文件可保留备份记录的天数:ALTER SYSTEM SET control_file_record_keep_time=32 SCOPE=SPFILE;(需重启实例生效,值应大于RMAN保留期)

三 备份脚本与定时任务

  • 示例目录与脚本
    • 目录:/u01/backup/scripts;日志:/u01/backup/logs
    • level0.sh(每周全备)
      • #!/bin/bash . ~/.bash_profile export ORACLE_SID=orcl rman target / <<‘EOF’ RUN { ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/inc0_%U’; ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/inc0_%U’; BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE INPUT; BACKUP CURRENT CONTROLFILE FORMAT ‘/u01/backup/rman/ctl_%F’; BACKUP SPFILE FORMAT ‘/u01/backup/rman/spfile_%F’; RELEASE CHANNEL c1; RELEASE CHANNEL c2; } CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT OBSOLETE; EOF
    • level1.sh(每日增量)
      • 与level0.sh基本一致,仅将“LEVEL 0”改为“LEVEL 1”。
    • arch_hourly.sh(每小时归档)
      • #!/bin/bash . ~/.bash_profile rman target / <<‘EOF’ RUN { ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/arch_%U’; SQL ‘ALTER SYSTEM ARCHIVE LOG CURRENT’; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL DELETE INPUT; RELEASE CHANNEL c1; } EOF
  • 定时任务(以oracle用户)
    • 每周日2点全备,周一至周六2点增量,每小时归档:
      • 0 2 * * 0 /u01/backup/scripts/level0.sh >>/u01/backup/logs/level0_$(date +%F).log 2>&1
      • 0 2 * * 1-6 /u01/backup/scripts/level1.sh >>/u01/backup/logs/level1_$(date +%F).log 2>&1
      • 0 * * * * /u01/backup/scripts/arch_hourly.sh >>/u01/backup/logs/arch_$(date +%F_%H).log 2>&1
  • 说明
    • 脚本首行加载环境变量(. ~/.bash_profile),避免crontab执行时找不到ORACLE_HOME/ORACLE_SID。
    • 归档脚本中执行“ALTER SYSTEM ARCHIVE LOG CURRENT”确保归档序列连续性。

四 监控验证与恢复演练

  • 备份有效性检查
    • RMAN> LIST BACKUP SUMMARY;
    • RMAN> REPORT OBSOLETE;
    • RMAN> CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP;
    • 定期校验:RMAN> BACKUP VALIDATE DATABASE;(校验数据文件可读)
  • 恢复演练(示例)
    • 完全恢复(数据文件丢失场景):RMAN> STARTUP FORCE NOMOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN;
    • 不完全恢复(基于时间点/SCN):RMAN> RUN { SET UNTIL TIME ‘2025-11-18 10:00:00’; RESTORE DATABASE; RECOVER DATABASE; } ALTER DATABASE OPEN RESETLOGS;
  • 运维要点
    • 监控备份日志与磁盘使用率;归档目录与备份目录分离,避免互相挤占。
    • 定期做恢复演练备份保留审计,确保策略与业务RPO/RTO一致。

五 逻辑备份与补充方案

  • Data Pump逻辑备份(Schema/全库)
    • 全库导出:expdp system/password@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=full_$(date +%F).dmp LOGFILE=full_$(date +%F).log FULL=Y
    • 导入:impdp system/password@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=full_2025-11-18.dmp LOGFILE=impdp.log FULL=Y
    • 适用:迁移、开发/测试环境快速恢复、特定对象抽取;不建议替代RMAN作为唯一生产物理备份。
  • 冷备份(停机维护窗口)
    • 适用:停机可接受的场景;步骤:SHUTDOWN IMMEDIATE → 复制数据文件/控制文件/归档/参数文件 → STARTUP。
  • 注意事项
    • 逻辑备份与物理备份可并行采用,互为补充;自动化建议统一由脚本与cron管理,并做好日志留存与告警。

0