首页主机资讯Oracle数据备份在Ubuntu上如何实现

Oracle数据备份在Ubuntu上如何实现

时间2026-01-20 12:58:04发布访客分类主机资讯浏览1370
导读:在 Ubuntu 上备份 Oracle 的两种常用方案 RMAN 物理备份:面向生产环境的热备/增量备份,支持归档日志、控制文件与备份校验,恢复粒度细、速度快,适合有归档模式与恢复目录的部署。 Data Pump 逻辑备份(expdp/i...

在 Ubuntu 上备份 Oracle 的两种常用方案

  • RMAN 物理备份:面向生产环境的热备/增量备份,支持归档日志控制文件备份校验,恢复粒度细、速度快,适合有归档模式恢复目录的部署。
  • Data Pump 逻辑备份(expdp/impdp):导出表、用户、全库等逻辑对象,便于跨平台迁移选择性恢复,对停机不敏感,适合开发/测试与部分生产场景。

RMAN 物理备份步骤

  • 准备与归档模式
    • sysdba 登录数据库,确认归档状态:
      SQL> archive log list;
    • 若未启用归档,按如下方式开启(会短暂停库):
      SQL> shutdown immediate;
      SQL> startup mount;
      SQL> alter database archivelog;
      SQL> alter database open;
  • 连接 RMAN 并执行备份(示例为连接到本机实例)
    • 连接目标库:
      $ rman target /
    • 常用备份命令:
      • 全库 + 归档日志:backup database plus archivelog;
      • 增量备份:backup incremental level 1;
      • 仅归档日志:backup archivelog all;
      • 控制文件:backup current controlfile;
  • 备份校验与清单查看
    • 查看备份:list backup;
    • 校验可用性:restore database validate;
  • 说明
    • 建议配置 FRA(快速恢复区) 与(可选)恢复目录,便于管理与保留策略控制。
    • 物理备份适合需要时间点恢复最小停机的生产库。

Data Pump 逻辑备份步骤

  • 创建操作系统目录并赋权
    • $ mkdir -p /data/exp_dir
    • $ chmod -R 775 /data/exp_dir
  • 在数据库中创建 DIRECTORY 对象并授权
    • SQL> create directory test_dir as ‘/data/exp_dir’;
    • SQL> grant read, write on directory test_dir to system;
  • 执行导出
    • 全库导出:
      $ expdp system/oracle directory=test_dir dumpfile=full_backup.dmp logfile=expdp_full.log full=y
    • 按用户导出:
      $ expdp system/oracle directory=test_dir dumpfile=schema.dmp logfile=expdp_schema.log schemas=SCOTT
    • 按表导出:
      $ expdp system/oracle directory=test_dir dumpfile=tab.dmp logfile=expdp_tab.log tables=SCOTT.EMP
  • 导入简述(如需恢复/迁移)
    • 全库导入:impdp system/oracle directory=test_dir dumpfile=full_backup.dmp logfile=impdp_full.log full=y
    • 按方案/表导入:使用 impdp 的 schemas/tables 等参数定向恢复。
  • 说明
    • 逻辑备份文件位于操作系统目录(如 /data/exp_dir),请确保磁盘空间充足权限正确

自动化与保留策略

  • 准备脚本与日志目录(示例)
    • $ mkdir -p /var/db_backups/oracle
    • $ chown oracle:oinstall /var/db_backups/oracle
  • 示例脚本 backup_oracle.sh(Data Pump 按用户导出,保留 7 天)
    • 要点:在脚本中显式设置 ORACLE_HOME、ORACLE_SID、PATH,避免 cron 环境缺失变量。
    • 示例:
      #!/bin/bash
      export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
      export ORACLE_SID=ORCLCDB
      export PATH=$ORACLE_HOME/bin:$PATH
      BACKUP_ROOT=“/var/db_backups/oracle”
      KEEP_DAYS=7
      DATE_STR=$(date +%Y%m%d)
      DUMP_FILE=“oracle_${ DATE_STR} .dmp”
      LOG_FILE=“oracle_${ DATE_STR} .log”
      ORACLE_USER=“system”
      ORACLE_PASS=“YourPassword”
      ORACLE_DIR=“TEST_DIR”
      mkdir -p “$BACKUP_ROOT”
      $ORACLE_HOME/bin/expdp ${ ORACLE_USER} /${ ORACLE_PASS} @//localhost:1521/${ ORACLE_SID} \ SCHEMAS=SCOTT \ DIRECTORY=${ ORACLE_DIR} \ DUMPFILE=${ DUMP_FILE} \ LOGFILE=${ LOG_FILE}

      清理旧备份

      find “$BACKUP_ROOT” -name “oracle_.dmp" -mtime +${ KEEP_DAYS} -delete
      find “$BACKUP_ROOT” -name "oracle_
      .log” -mtime +${ KEEP_DAYS} -delete
  • 赋权与定时任务
    • $ chmod +x /usr/local/bin/backup_oracle.sh
    • oracle 用户添加 cron(示例:每天 03:00 执行)
      $ crontab -u oracle -e
      0 3 * * * /usr/local/bin/backup_oracle.sh > > /var/db_backups/oracle/backup.log 2> & 1
  • 说明
    • 若使用 RMAN,可将脚本中的 expdp 替换为 RMAN 命令块,并在 cron 中调用 rman 脚本;务必在脚本开头加载 Oracle 环境变量。

恢复要点与注意事项

  • RMAN 恢复
    • 数据文件丢失:RMAN> restore database; 然后 RMAN> recover database;
    • 仅个别数据文件:RMAN> restore datafile < file_id> ; RMAN> recover datafile < file_id> ;
    • 不完全恢复(基于时间/SCN):RMAN> run { set until time ‘2026-01-01 12:00:00’; restore database; recover database; }
  • Data Pump 恢复
    • 全库:impdp system/oracle directory=TEST_DIR dumpfile=full_backup.dmp full=y logfile=impdp_full.log
    • 按方案/表:使用 schemas/tables 参数定向导入。
  • 关键注意事项
    • 生产库优先使用 RMAN 并启用 归档日志;定期做备份校验恢复演练
    • 逻辑备份适合迁移/部分恢复,对大数据量高并发场景恢复速度不如 RMAN。
    • 备份文件请异地/离线保存,并监控磁盘空间保留策略;脚本务必设置 ORACLE_HOME、ORACLE_SID、PATH 等环境变量,避免 cron 执行失败。

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


若转载请注明出处: Oracle数据备份在Ubuntu上如何实现
本文地址: https://pptw.com/jishu/787168.html
SecureCRT在Debian中的快捷键大全 Debian系统SecureCRT如何设置定时任务

游客 回复需填写必要信息