在 Linux 上备份 Oracle 数据库,常见做法主要有 RMAN 备份、数据泵(expdp/impdp)、冷备份 和 热备份。实际生产环境最推荐的是 RMAN + 归档模式。下面按“最常用 → 备用方案”给你系统说明。
RMAN(Recovery Manager)是 Oracle 官方备份恢复工具,支持:
sqlplus / as sysdba
archive log list;
如需开启归档:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
rman target /
RUN {
BACKUP DATABASE
PLUS ARCHIVELOG
FORMAT '/u01/backup/full_%d_%U.bkp';
}
备份内容包括:
BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
BACKUP ARCHIVELOG ALL;
LIST BACKUP;
适合:
CREATE DIRECTORY backup_dir AS '/u01/backup';
GRANT READ, WRITE ON DIRECTORY backup_dir TO scott;
expdp system/password full=y directory=backup_dir dumpfile=full_%U.dmp logfile=full.log
expdp system/password schemas=scott directory=backup_dir dumpfile=scott.dmp
⚠️ 缺点:
适用于:
步骤:
sqlplus / as sysdba
shutdown immediate;
复制以下文件:
cp -r $ORACLE_BASE/oradata /backup/oradata
cp $ORACLE_HOME/dbs/spfile*.ora /backup/
启动数据库:
startup;
仅在非 RMAN 场景下使用:
ALTER TABLESPACE users BEGIN BACKUP;
-- 复制数据文件
ALTER TABLESPACE users END BACKUP;
⚠️ 容易出错,不建议新系统使用。
| 场景 | 建议 |
|---|---|
| 生产环境 | RMAN + 归档 |
| 每晚 | 全备 + 归档 |
| 白天 | 归档日志备份 |
| 关键库 | 增量 + 归档 |
| 灾备 | RMAN + Data Guard |
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
$ORACLE_HOME/bin/rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF
✅ 生产环境首选:RMAN + ARCHIVELOG
✅ 迁移/小库:expdp
❌ 不推荐:手动热备份
如果你需要:
可以直接告诉我,我给你定制备份方案。