在 Linux 上备份 Oracle 数据库,常见做法分三类:物理备份(RMAN)、逻辑备份(exp/imp、expdp/impdp)以及手工冷备份。下面按生产环境推荐 → 常用方案 → 示例来说明。
SELECT log_mode FROM v$database;
如果未开启:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
su - oracle
rman target /
RUN {
BACKUP DATABASE PLUS ARCHIVELOG;
}
备份默认存放在:
$ORACLE_HOME/dbs/
或快闪恢复区(FRA)
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/backup/oracle/%U';
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
}
BACKUP INCREMENTAL LEVEL 1 DATABASE;
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
✅ 适合 迁移、小库、部分表备份 ❌ 不适合超大数据量或灾难恢复
CREATE DIRECTORY dp_dir AS '/backup/expdp';
GRANT READ, WRITE ON DIRECTORY dp_dir TO system;
expdp system/password FULL=Y DIRECTORY=dp_dir DUMPFILE=full_%U.dmp LOGFILE=full.log
expdp system/password SCHEMAS=scott DIRECTORY=dp_dir
适合:
SHUTDOWN IMMEDIATE;
备份以下目录:
cp -rp $ORACLE_HOME/dbs /backup/
cp -rp /u01/app/oracle/oradata /backup/
STARTUP;
⚠️ 需要拷贝:
| 项目 | 建议 |
|---|---|
| 备份方式 | RMAN |
| 模式 | ARCHIVELOG |
| 频率 | 每天增量 + 每周全备 |
| 归档日志 | 实时备份 |
| 备份存储 | 异地 / NAS / 云盘 |
| 校验 | 定期 RESTORE VALIDATE |
rman target /
确保:
ALTER SYSTEM SWITCH LOGFILE;
我可以进一步给你定制方案:
如果你愿意,我可以帮你 写一套完整 RMAN 自动备份脚本。