温馨提示×

怎样备份linux oracle

小樊
35
2026-10-13 07:28:51
栏目: 云计算

在 Linux 上备份 Oracle 数据库,常见做法有以下几种,按推荐程度从高到低说明,并给出具体命令示例。


一、使用 RMAN 备份(✅ 最推荐)

RMAN(Recovery Manager) 是 Oracle 官方备份工具,支持全量、增量、归档日志备份。

1. 准备工作

su - oracle

进入 SQL*Plus 确认数据库处于 ARCHIVELOG 模式(生产环境必须):

sqlplus / as sysdba
SQL> archive log list;

如果不是:

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

2. 全库备份(含归档日志)

rman target /
BACKUP DATABASE PLUS ARCHIVELOG;

默认备份路径在:

$ORACLE_HOME/dbs 或快速恢复区(FRA)

3. 指定备份目录

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/oracle/%U';
BACKUP DATABASE PLUS ARCHIVELOG;

4. 备份控制文件

BACKUP CURRENT CONTROLFILE;

二、逻辑备份(expdp / impdp)

适合跨版本迁移、表级备份。

1. 创建目录对象

CREATE DIRECTORY dump_dir AS '/backup/oracle';
GRANT READ, WRITE ON DIRECTORY dump_dir TO system;

2. 导出全库

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

3. 导出指定用户

expdp system/password SCHEMAS=scott DIRECTORY=dump_dir DUMPFILE=scott.dmp

三、冷备份(停机备份)

数据库必须关闭

shutdown immediate;

复制以下文件:

  • 数据文件($ORACLE_BASE/oradata)
  • 控制文件
  • 重做日志文件
  • 参数文件(spfile / pfile)
cp -r /u01/app/oracle/oradata /backup/oracle/

四、自动化备份(crontab 示例)

crontab -e
0 2 * * * /home/oracle/rman_backup.sh

rman_backup.sh 示例:

#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19c
$ORACLE_HOME/bin/rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF

五、备份策略建议

  • ✅ 生产环境:RMAN + 归档日志
  • ✅ 每日全备 + 每小时归档
  • ✅ 备份文件离线/异地保存
  • ✅ 定期做 恢复演练

六、我可以进一步帮你

你可以告诉我:

  1. Oracle 版本(11g / 12c / 19c?)
  2. 是否开启归档模式
  3. 单实例还是 RAC
  4. 是否需要自动脚本

我可以给你完整可执行的备份方案。

0 踩