温馨提示×

怎么备份Linux Oracle数据

小樊
33
2026-08-24 20:20:23
栏目: 云计算

在 Linux 上备份 Oracle 数据库,常见做法分三类:物理备份(RMAN)逻辑备份(exp/imp、expdp/impdp)以及手工冷备份。下面按生产环境推荐 → 常用方案 → 示例来说明。


一、最推荐:RMAN 物理备份(生产必选)

1️⃣ 什么是 RMAN

  • Oracle 官方备份工具
  • 支持:
    • 全量 / 增量备份
    • 归档日志备份
    • 自动管理
    • 灾难恢复

2️⃣ 前提条件

  • 数据库处于 ARCHIVELOG 模式
SELECT log_mode FROM v$database;

如果未开启:

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

3️⃣ RMAN 全库备份示例

(1)登录 RMAN

su - oracle
rman target /

(2)全库 + 归档日志备份

RUN {
  BACKUP DATABASE PLUS ARCHIVELOG;
}

备份默认存放在:

$ORACLE_HOME/dbs/

或快闪恢复区(FRA)


4️⃣ 指定备份路径(常用)

RUN {
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/backup/oracle/%U';
  BACKUP DATABASE PLUS ARCHIVELOG;
  RELEASE CHANNEL c1;
}

5️⃣ 增量备份(节省空间)

BACKUP INCREMENTAL LEVEL 1 DATABASE;

6️⃣ 定时自动备份(crontab)

0 2 * * * /home/oracle/rman_backup.sh

rman_backup.sh 示例:

#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF

二、逻辑备份:expdp(数据导出)

✅ 适合 迁移、小库、部分表备份 ❌ 不适合超大数据量或灾难恢复

1️⃣ 创建逻辑目录

CREATE DIRECTORY dp_dir AS '/backup/expdp';
GRANT READ, WRITE ON DIRECTORY dp_dir TO system;

2️⃣ expdp 全库导出

expdp system/password FULL=Y DIRECTORY=dp_dir DUMPFILE=full_%U.dmp LOGFILE=full.log

3️⃣ 按用户导出

expdp system/password SCHEMAS=scott DIRECTORY=dp_dir

三、冷备份(停机备份)

适合:

  • 数据库允许停机
  • 无 RMAN 环境

步骤:

SHUTDOWN IMMEDIATE;

备份以下目录:

cp -rp $ORACLE_HOME/dbs /backup/
cp -rp /u01/app/oracle/oradata /backup/
STARTUP;

⚠️ 需要拷贝:

  • 数据文件
  • 控制文件
  • 在线日志
  • 参数文件

四、备份策略建议(生产环境)

项目 建议
备份方式 RMAN
模式 ARCHIVELOG
频率 每天增量 + 每周全备
归档日志 实时备份
备份存储 异地 / NAS / 云盘
校验 定期 RESTORE VALIDATE

五、常见错误排查

❌ RMAN 无法连接

rman target /

确保:

  • ORACLE_SID 正确
  • 数据库已启动

❌ 归档日志满

ALTER SYSTEM SWITCH LOGFILE;

六、你可以告诉我

我可以进一步给你定制方案

  • ✅ Oracle 版本(11g / 12c / 19c?)
  • ✅ 数据库大小(GB)
  • ✅ 是否 7×24
  • ✅ 是否需要异地备份

如果你愿意,我可以帮你 写一套完整 RMAN 自动备份脚本

0