首页主机资讯如何进行Linux Oracle备份

如何进行Linux Oracle备份

时间2026-01-20 06:55:03发布访客分类主机资讯浏览671
导读:Linux 上 Oracle 备份实操指南 一 备份方式总览与选择 物理备份:使用 RMAN(Recovery Manager)对数据文件、控制文件、归档日志进行块级备份,支持完全备份与增量备份,可在线执行(热备),恢复速度快,适合生产库...

Linux 上 Oracle 备份实操指南

一 备份方式总览与选择

  • 物理备份:使用 RMAN(Recovery Manager)对数据文件、控制文件、归档日志进行块级备份,支持完全备份增量备份,可在线执行(热备),恢复速度快,适合生产库的核心保护。
  • 逻辑备份:使用 **Data Pump(expdp/impdp)**导出表、用户、表空间或全库为逻辑文件,便于迁移与部分恢复,适合开发/测试、结构迁移与定点回滚。
  • 文件系统拷贝:在停机窗口对 数据文件、控制文件、SPFILE、归档日志做一致性拷贝(冷备),实现简单但要求停库,适合非核心或允许短停的场景。
  • 建议组合:生产库以 RMAN 热备为主,配合 Data Pump 定期逻辑导出;关键系统可叠加 Data Guard 做零/低 RPO 的异地容灾。

二 使用 RMAN 进行物理备份

  • 前提准备
    • oracle 用户操作,设置环境变量:ORACLE_HOME、ORACLE_SID、PATH
    • 建议数据库处于 归档模式(ARCHIVELOG),便于在线备份与时间点恢复。
    • 规划备份目录(本地磁盘或 NFS),确保充足空间与权限。
  • 常用 RMAN 备份命令
    • 连接 RMAN:rman target /
    • 全库+归档日志(压缩备份集示例):
      RUN {
          
        ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
          
        ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
          
        BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '/backup/rman/full_%d_%T_%U.bak';
          
        BACKUP ARCHIVELOG ALL FORMAT '/backup/rman/arch_%d_%T_%U.bak' DELETE INPUT;
          
        BACKUP SPFILE FORMAT '/backup/rman/spfile_%U_%T.bak';
          
        BACKUP CURRENT CONTROLFILE FORMAT '/backup/rman/ctl_%U_%T.bak';
          
        RELEASE CHANNEL c1;
          
        RELEASE CHANNEL c2;
      
      }
          
      
    • 常用维护:
      • 列出备份:LIST BACKUP;
      • 标记过期:REPORT OBSOLETE; 与清理:DELETE NOPROMPT OBSOLETE;
      • 校验一致性:CROSSCHECK BACKUP; CROSSCHECK ARCHIVELOG ALL;
  • 自动化与保留策略
    • 在 RMAN 中配置控制文件自动备份与格式:
      CONFIGURE CONTROLFILE AUTOBACKUP ON;
          
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/ctl_auto_%F';
          
      
    • 结合 REPORT OBSOLETEDELETE NOPROMPT OBSOLETE 实现基于保留策略的自动清理

三 使用 Data Pump 进行逻辑备份

  • 前提准备
    • 创建数据库目录对象并赋权(指向服务器本地目录):
      CREATE OR REPLACE DIRECTORY dpump_dir AS '/backup/dpump';
          
      GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;
          
      GRANT EXP_FULL_DATABASE TO system;
            -- 全库导出所需
      
  • 常用导出/导入
    • 全库导出:
      expdp system/password@SID DIRECTORY=dpump_dir \
        DUMPFILE=full_%U.dmp LOGFILE=full_$(date +%F).log FULL=Y PARALLEL=4
      
    • 按用户导出:
      expdp system/password@SID DIRECTORY=dpump_dir \
        DUMPFILE=schema_$(date +%F).dmp LOGFILE=schema_exp.log SCHEMAS=hr,oe
      
    • 导入示例:
      impdp system/password@SID DIRECTORY=dpump_dir \
        DUMPFILE=full_2026-01-05.dmp LOGFILE=full_imp.log FULL=Y
      
  • 性能与可用性建议
    • 通过 PARALLEL 提升导出/导入速度;
    • 使用 %U 分片避免单文件过大;
    • 导出前检查 磁盘空间网络稳定性
    • 重要导出文件及时异地复制与校验。

四 自动化与常见运维要点

  • Shell 自动化示例(RMAN 每日全备 + 归档清理)
    #!/bin/bash
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:$PATH
    
    BACKUP_DIR=/backup/rman
    DATE=$(date +%F)
    LOG=$BACKUP_DIR/rman_full_$DATE.log
    
    mkdir -p $BACKUP_DIR
    
    $ORACLE_HOME/bin/rman target / log=$LOG <
        <
    'EOF'
    RUN {
        
      ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
        
      ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
    
      BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '${
    BACKUP_DIR}
        /db_%d_%T_%U.bak';
    
      BACKUP ARCHIVELOG ALL FORMAT '${
    BACKUP_DIR}
        /arch_%d_%T_%U.bak' DELETE INPUT;
    
      BACKUP SPFILE FORMAT '${
    BACKUP_DIR}
        /spfile_%U_%T.bak';
    
      BACKUP CURRENT CONTROLFILE FORMAT '${
    BACKUP_DIR}
        /ctl_%U_%T.bak';
        
      CROSSCHECK BACKUP;
        
      CROSSCHECK ARCHIVELOG ALL;
        
      DELETE NOPROMPT EXPIRED BACKUP;
        
      REPORT OBSOLETE;
        
      DELETE NOPROMPT OBSOLETE;
        
      RELEASE CHANNEL c1;
        
      RELEASE CHANNEL c2;
    
    }
        
    EOF
    
    # 可选:压缩与远端同步
    # gzip $BACKUP_DIR/*.bak
    # rsync -avz $BACKUP_DIR/ backup@remote:/backup/rman/
    
    • 定时任务(每天 02:00 执行):
      0 2 * * * /home/oracle/scripts/rman_full.sh >
          >
           /var/log/rman_full.log 2>
          &
          1
      
  • 常见要点
    • 备份期间关注 I/O 与空间,避免磁盘写满导致备份失败;
    • 定期做 恢复演练备份校验(LIST/REPORT/CROSSCHECK);
    • 对关键库建议将备份复制到远程/云端,并与监控系统集成。

五 快速恢复示例

  • RMAN 不完全恢复(时间点恢复,PITR)
    1. 启动到 mount:
      sqlplus / as sysdba
      STARTUP MOUNT;
      
      
    2. RMAN 恢复至指定时间:
      rman target /
      RUN {
          
        SET UNTIL TIME '2026-01-05 10:00:00';
          
        RESTORE DATABASE;
          
        RECOVER DATABASE;
      
      }
          
      
    3. 打开数据库:
      ALTER DATABASE OPEN RESETLOGS;
          
      
  • Data Pump 导入恢复(按用户/全库)
    impdp system/password@SID DIRECTORY=dpump_dir \
      DUMPFILE=schema_2026-01-05.dmp LOGFILE=schema_imp.log SCHEMAS=hr,oe
    
  • 提示
    • 恢复前先做好当前环境备份
    • 归档日志缺失可能导致无法前滚到目标时间点;
    • 生产恢复建议在维护窗口并先演练。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何进行Linux Oracle备份
本文地址: https://pptw.com/jishu/786805.html
怎样监控Linux Oracle状态 Linux Oracle配置步骤是什么

游客 回复需填写必要信息