温馨提示×

Linux上Oracle如何备份

小樊
43
2025-11-28 20:01:42
栏目: 云计算

Linux上Oracle备份实操指南

一、常用备份方式与适用场景

  • RMAN物理备份:Oracle官方备份恢复引擎,支持完全备份增量备份(Level 0/1/2)、压缩与块级校验,可联同归档日志实现时间点恢复,适合生产库与需要快速恢复的场景。
  • Data Pump逻辑备份:通过expdp/impdp导出为DMP文件,便于跨平台迁移按用户/表空间/全库导出与部分恢复,适合开发/测试结构/数据迁移
  • 文件系统拷贝:使用tar/cp/rsync对数据文件、控制文件、归档日志等进行拷贝,仅建议用于停机维护窗口只读副本的辅助备份。
  • 第三方备份软件:如Veritas NetBackup、Commvault等,可与RMAN集成实现自动化与集中化管理。
    以上方法可组合使用,以兼顾恢复目标(RPO/RTO)性能影响存储成本

二、RMAN物理备份与恢复步骤

  • 前提准备
    • 建议数据库处于归档日志模式(ARCHIVELOG),以便联机备份与时间点恢复。
    • 规划备份目录(如:/backup/rman),并确保oracle用户对该目录有读写权限。
  • 典型备份命令(示例)
    • 全库备份(含归档日志、控制文件、SPFILE):
      rman target /
      RUN {
        ALLOCATE CHANNEL c1 TYPE DISK;
        ALLOCATE CHANNEL c2 TYPE DISK;
        BACKUP DATABASE PLUS ARCHIVELOG;
        BACKUP CURRENT CONTROLFILE;
        BACKUP SPFILE;
        RELEASE CHANNEL c1;
        RELEASE CHANNEL c2;
      }
      
    • 增量备份(示例为Level 1):
      rman target /
      BACKUP INCREMENTAL LEVEL 1 DATABASE;
      
  • 恢复示例(实例故障或数据文件丢失)
    rman target /
    RUN {
      STARTUP FORCE NOMOUNT;
      RESTORE CONTROLFILE FROM '/backup/rman/...ctl';
      ALTER DATABASE MOUNT;
      RESTORE DATABASE;
      RECOVER DATABASE;
      ALTER DATABASE OPEN RESETLOGS;
    }
    
  • 备份维护与清理
    • 建议定期执行CROSSCHECKDELETE OBSOLETE/EXPIRED,并按保留策略删除历史备份:
      rman target /
      RUN {
        CROSSCHECK BACKUP;
        CROSSCHECK ARCHIVELOG ALL;
        DELETE NOPROMPT EXPIRED BACKUP;
        DELETE NOPROMPT OBSOLETE;
        DELETE NOPROMPT BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE-15';
        DELETE NOPROMPT BACKUP OF ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-15';
      }
      

以上命令覆盖RMAN热备归档日志联备控制文件/SPFILE备份恢复流程,并给出过期与保留策略的维护范式。

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

  • 前提准备
    • 在数据库中创建DIRECTORY对象并授权(示例目录:/opt/oracle/bak_dir):
      sqlplus / as sysdba
      CREATE OR REPLACE DIRECTORY bak_dir AS '/opt/oracle/bak_dir';
      GRANT READ, WRITE ON DIRECTORY bak_dir TO system;
      
  • 全库导出与导入
    • 导出:
      expdp system/password@SID DIRECTORY=bak_dir \
        DUMPFILE=DB_backup_%U.dmp LOGFILE=expdp_full.log FULL=Y PARALLEL=4
      
    • 导入:
      impdp system/password@SID DIRECTORY=bak_dir \
        DUMPFILE=DB_backup_%U.dmp LOGFILE=impdp_restore.log FULL=Y PARALLEL=4
      
  • 按用户/表空间导出与导入(示例)
    • 导出指定用户:
      expdp system/password@SID DIRECTORY=bak_dir \
        DUMPFILE=expdp_user.dmp LOGFILE=expdp_user.log SCHEMAS=SCOTT
      
    • 导入并重映射用户(跨库迁移常用):
      impdp system/password@SID DIRECTORY=bak_dir \
        DUMPFILE=expdp_user.dmp LOGFILE=impdp_user.log \
        REMAP_SCHEMA=SCOTT:SCOTT_NEW TABLE_EXISTS_ACTION=TRUNCATE
      
  • 常用参数提示
    • PARALLEL提升导出/导入速度;TABLE_EXISTS_ACTION控制对象已存在时的行为(如TRUNCATE/SKIP/REPLACE/APPEND)。
      以上流程覆盖Data Pump全库/按用户/重映射导出与导入,适合迁移、部分恢复开发测试场景。

四、自动化与保留策略

  • 定时备份(crontab)
    • 示例:每日02:00执行RMAN全备,每周日00:30执行Level 0,其余日执行Level 1(需提前准备相应脚本):
      # 每日全备
      0 2 * * * /home/oracle/scripts/rman_full.sh >> /home/oracle/backup/rman_full.log 2>&1
      # 周日0级增量
      30 0 * * 0 /home/oracle/scripts/rman_level0.sh >> /home/oracle/backup/rman_l0.log 2>&1
      # 周一到周六1级增量
      30 0 * * 1-6 /home/oracle/scripts/rman_level1.sh >> /home/oracle/backup/rman_l1.log 2>&1
      
  • 备份保留与清理
    • 在RMAN中配置保留策略(如窗口保留7天):
      rman target /
      CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
      
    • 脚本内建议加入日志轮转过期清理(见上文RMAN维护示例)。
  • 备份验证
    • 定期执行RESTORE VALIDATELIST BACKUP SUMMARY,并抽样做恢复演练,确保备份可用可恢复
      以上做法可实现自动化调度保留策略备份验证,降低人为失误并提升可用性。

0