温馨提示×

Oracle数据库在Debian上的备份恢复

小樊
45
2025-12-09 07:02:19
栏目: 云计算

在 Debian 上的 Oracle 备份与恢复实践

一 备份策略与准备

  • 备份方式选型
    • 物理备份:使用 RMAN(Recovery Manager),支持联机热备、增量备份与时间点恢复,适合生产库的高可用与细粒度恢复需求。
    • 逻辑备份:使用 Data Pump(expdp/impdp),适合跨平台迁移、按对象/用户恢复、开发测试环境快速搭建。
    • 冷备份:停库后用 cp/tar/rsync 复制关键文件,简单但需停机,不支持细粒度时间点恢复。
  • 归档与目录准备
    • 建议开启 ARCHIVELOG 模式以获得可恢复性更强的联机备份与时间点恢复能力。
    • 为 RMAN 与 Data Pump 创建 Oracle Directory 对象 并授予读写权限,例如:CREATE DIRECTORY backup_dir AS ‘/backup/oracle’; 并确保 OS 目录存在且 oracle:oinstall 可写。
  • 基本策略建议
    • 定期 全量备份(如每周/每月)+ 每日增量备份(如 Level 1)+ 持续归档日志备份,形成可回滚的时间窗口。
    • 将备份落盘到独立磁盘/网络存储,并保留多份副本;定期做恢复演练与校验(校验和/还原测试)。

二 RMAN 物理备份与恢复步骤

  • 备份示例
    • 全量备份(含归档日志)
      rman target /
      RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/full_%U';
      
    • 增量备份(基于上一次备份)
      rman target /
      RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/oracle/incr_%U';
      
    • 仅归档日志备份
      rman target /
      RMAN> BACKUP ARCHIVELOG ALL FORMAT '/backup/oracle/arch_%U';
      
    • 备份脚本化与自动化(示例)
      cat > /opt/scripts/rman_backup.rman <<'EOF'
      RUN {
        ALLOCATE CHANNEL ch1 TYPE DISK;
        BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/backup/oracle/full_%U';
        RELEASE CHANNEL ch1;
      }
      EOF
      rman target / @/opt/scripts/rman_backup.rman
      # 建议配合 Debian 的 crontab 定时执行并做日志轮转
      
  • 恢复示例
    • 实例故障但控制文件/数据文件完好:
      rman target /
      RMAN> STARTUP MOUNT;
      RMAN> RESTORE DATABASE;
      RMAN> RECOVER DATABASE;
      RMAN> ALTER DATABASE OPEN;
      
    • 时间点恢复(PITR,示例恢复到 SCN 12345678)
      rman target /
      RMAN> STARTUP MOUNT;
      RMAN> RESTORE DATABASE UNTIL SCN 12345678;
      RMAN> RECOVER DATABASE UNTIL SCN 12345678;
      RMAN> ALTER DATABASE OPEN RESETLOGS;
      
    • 控制文件丢失或损坏:
      rman target /
      RMAN> STARTUP NOMOUNT;
      RMAN> RESTORE CONTROLFILE FROM '/backup/oracle/ctrl_XXXX.bkp';
      RMAN> ALTER DATABASE MOUNT;
      RMAN> RESTORE DATABASE;
      RMAN> RECOVER DATABASE;
      RMAN> ALTER DATABASE OPEN RESETLOGS;
      
    • 归档日志缺失导致无法前滚时,RMAN 会提示缺失序列;需从可用备份补齐或调整恢复目标(如改为 UNTIL TIME/SCN)。

三 Data Pump 逻辑备份与恢复步骤

  • 备份(expdp)
    # 1) 创建目录对象(仅需一次)
    sqlplus / as sysdba
    SQL> CREATE DIRECTORY dp_dir AS '/backup/oracle/dp';
    SQL> GRANT READ, WRITE ON DIRECTORY dp_dir TO system;
    
    # 2) 全库导出
    expdp system/password@orcl DIRECTORY=dp_dir DUMPFILE=full_$(date +%F).dmp \
         LOGFILE=full_$(date +%F).log FULL=Y PARALLEL=2
    
  • 恢复(impdp)
    # 1) 目标库创建相同目录对象并赋权
    sqlplus / as sysdba
    SQL> CREATE DIRECTORY dp_dir AS '/backup/oracle/dp';
    SQL> GRANT READ, WRITE ON DIRECTORY dp_dir TO system;
    
    # 2) 全库导入(可按需调整 REMAP_SCHEMA/REMAP_TABLESPACE)
    impdp system/password@orcl DIRECTORY=dp_dir DUMPFILE=full_2025-12-09.dmp \
         LOGFILE=imp_$(date +%F).log FULL=Y PARALLEL=2 TABLE_EXISTS_ACTION=REPLACE
    
  • 常用场景
    • 按用户/表空间迁移:使用 SCHEMAS=TABLESPACES=REMAP_SCHEMA=REMAP_TABLESPACE= 等参数。
    • 部分对象恢复:使用 INCLUDE=EXCLUDE= 精准控制导入对象集合。

四 冷备份与注意事项

  • 冷备份步骤(需停库)
    sqlplus / as sysdba
    SQL> SHUTDOWN IMMEDIATE;
    # 备份关键文件:参数文件、控制文件、数据文件、联机重做日志、归档目录、口令文件等
    SQL> STARTUP;
    
    说明:冷备操作简单,但必须停机,且通常不支持细粒度时间点恢复;适合维护窗口或迁移前的快照式备份。
  • 关键注意事项
    • 权限与目录:确保 OS 目录权限Oracle Directory 对象权限 正确,RMAN/Data Pump 才能写入。
    • 归档与保留:归档日志需与数据备份配套保留,避免恢复时“断档”;定期清理过期备份并做 恢复演练
    • 版本与兼容性:Data Pump 更适合跨小版本/平台迁移;跨大版本或字符集变更需额外评估与转换策略。
    • 监控与日志:为 RMAN/Data Pump 作业配置 日志输出与告警,并保留历史记录以便审计与问题定位。

0