首页主机资讯Ubuntu上Oracle数据库的备份与恢复实践

Ubuntu上Oracle数据库的备份与恢复实践

时间2026-01-20 12:52:12发布访客分类主机资讯浏览216
导读:Ubuntu上Oracle数据库的备份与恢复实践 一 环境准备与前提 以oracle系统用户操作:执行su - oracle,确保ORACLE_SID、ORACLE_HOME、PATH等环境变量正确。 建议数据库运行在归档日志模式(ARC...

Ubuntu上Oracle数据库的备份与恢复实践

一 环境准备与前提

  • oracle系统用户操作:执行su - oracle,确保ORACLE_SIDORACLE_HOMEPATH等环境变量正确。
  • 建议数据库运行在归档日志模式(ARCHIVELOG),以支持时间点恢复与不完全恢复:
    • 检查:archive log list;
    • 启用:
      shutdown immediate;
          
      startup mount;
          
      alter database archivelog;
          
      alter database open;
          
      
  • 备份目录准备:创建本地备份目录并赋权(示例:/u01/backup/rman/u01/backup/dp),确保oracle:oinstall可读写。
  • 逻辑备份需创建Data Pump目录对象并授权:
    mkdir -p /u01/backup/dp
    chown oracle:oinstall /u01/backup/dp
    chmod 775 /u01/backup/dp
    
    sqlplus / as sysdba
    create directory dp_dir as '/u01/backup/dp';
        
    grant read, write on directory dp_dir to system;
        
    
  • 建议开启控制文件自动备份,便于恢复时自动定位备份集:
    rman target /
    configure controlfile autobackup on;
        
    configure controlfile autobackup format for device type disk to '/u01/backup/rman/ctl_%F';
        
    

二 物理备份 RMAN 实战

  • 进入RMAN:rman target /
  • 常用备份命令(按需组合):
    • 完整数据库备份(含归档日志,压缩备份集):
      backup as compressed backupset database plus archivelog delete input;
          
      
    • 增量备份(示例:差异增量,级别1):
      backup incremental level 1 database plus archivelog delete input;
          
      
    • 归档日志备份:
      backup archivelog all delete input;
          
      
    • 控制文件与SPFILE备份(若未开启自动备份):
      backup current controlfile;
          
      backup spfile;
          
      
    • 查看备份:
      list backup;
          
      
  • 建议将备份写入快速磁盘(如本地SSD或高性能NFS),并定期做异地/离线拷贝。

三 物理恢复 RMAN 实战

  • 场景A 完全恢复(介质故障但控制文件/数据文件/归档完整)
    rman target /
    shutdown immediate;
        
    startup mount;
        
    restore database;
        
    recover database;
        
    alter database open;
        
    
  • 场景B 不完全恢复(时间点/SCN,需以resetlogs打开)
    rman target /
    shutdown immediate;
        
    startup mount;
        
    restore database;
        
    recover database until time "to_date('2026-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS')";
        
    alter database open resetlogs;
        
    
  • 场景C 丢失控制文件(有自动备份时)
    rman target /
    startup nomount;
        
    restore controlfile from autobackup;
        
    alter database mount;
        
    recover database;
        
    alter database open resetlogs;
        
    
  • 场景D 仅个别数据文件损坏(离线后恢复)
    rman target /
    sqlplus / as sysdba
    alter database datafile <
        file#>
         offline immediate;
        
    exit
    restore datafile <
        file#>
        ;
        
    recover datafile <
        file#>
        ;
        
    sqlplus / as sysdba
    alter database datafile <
        file#>
         online;
        
    
  • 恢复完成后,建议执行校验:list backup summary; validate backupset < id> ;

四 逻辑备份与恢复 Data Pump

  • 全库导出(示例):
    expdp system/oracle@ORCL directory=dp_dir \
      dumpfile=full_$(date +%F).dmp logfile=full_$(date +%F).log full=y
    
  • 按用户导出:
    expdp system/oracle@ORCL directory=dp_dir \
      dumpfile=schema_$(date +%F).dmp logfile=schema_$(date +%F).log \
      schemas=SCOTT
    
  • 导入全库:
    impdp system/oracle@ORCL directory=dp_dir \
      dumpfile=full_2026-01-05.dmp logfile=impdp_full.log full=y
    
  • 按用户导入(含重映射与表空间):
    impdp system/oracle@ORCL directory=dp_dir \
      dumpfile=schema_2026-01-05.dmp logfile=impdp_schema.log \
      schemas=SCOTT remap_schema=SCOTT:SCOTT_NEW \
      remap_tablespace=USERS:USERS_NEW
    
  • 提示:逻辑备份适合迁移/开发/部分对象恢复,不具备时间点恢复能力,且对停机时间较敏感。

五 自动化与运维建议

  • 备份脚本示例(RMAN压缩全备 + 归档删除 + 保留策略)
    #!/bin/bash
    export ORACLE_SID=ORCL
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    export PATH=$ORACLE_HOME/bin:$PATH
    
    BACKUP_DIR=/u01/backup/rman
    LOG_FILE=$BACKUP_DIR/rman_backup_$(date +%F).log
    RETENTION_DAYS=7
    
    mkdir -p $BACKUP_DIR
    
    rman target / <
        <
        'EOF' >
        >
         $LOG_FILE 2>
        &
        1
    configure retention policy to recovery window of $RETENTION_DAYS days;
        
    backup as compressed backupset database plus archivelog delete input;
        
    backup current controlfile;
        
    delete noprompt obsolete;
        
    EOF
    
    # 清理过期备份文件(按文件系统时间)
    find $BACKUP_DIR -name "*.bkp" -mtime +$RETENTION_DAYS -delete
    
  • 定时任务(每天02:00执行):
    chmod +x /u01/scripts/rman_backup.sh
    crontab -e
    0 2 * * * /u01/scripts/rman_backup.sh
    
  • 监控与校验:
    • 定期执行list backup summary; validate backupset
    • 将RMAN日志接入Zabbix/Prometheus告警;
    • 定期在测试环境演练恢复流程,验证备份可用性与RPO/RTO。

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


若转载请注明出处: Ubuntu上Oracle数据库的备份与恢复实践
本文地址: https://pptw.com/jishu/787162.html
Ubuntu Oracle数据库的集群配置教程 Ubuntu Oracle数据库的性能调优策略

游客 回复需填写必要信息