温馨提示×

linux oracle怎样备份数据

小樊
45
2026-10-21 23:42:27
栏目: 云计算

在 Linux 下对 Oracle 数据库进行备份,常见方式主要有以下几种,按使用频率和推荐程度说明:


一、使用 RMAN(推荐,官方标准方式)

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

1. 全库备份(冷/热备均可)

rman target /

进入 RMAN 后执行:

BACKUP DATABASE PLUS ARCHIVELOG;

或写成脚本:

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

2. 增量备份

BACKUP INCREMENTAL LEVEL 1 DATABASE;

3. 备份到指定目录

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

✅ 优点:可靠、支持时间点恢复
❌ 需要一定学习成本


二、逻辑备份(expdp / impdp)

适合跨版本、跨平台迁移或小型库。

1. 创建目录对象

CREATE OR REPLACE DIRECTORY dump_dir AS '/backup/oracle';
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;

2. 导出全库

expdp system/password FULL=Y DIRECTORY=dump_dir DUMPFILE=full.dmp LOGFILE=full.log

3. 导出某用户

expdp scott/tiger DIRECTORY=dump_dir SCHEMAS=scott DUMPFILE=scott.dmp

✅ 优点:简单、灵活
❌ 不支持块级恢复


三、冷备份(物理文件复制)

数据库必须关闭

sqlplus / as sysdba
SHUTDOWN IMMEDIATE;

复制以下文件:

  • 数据文件(DATAFILE)
  • 控制文件(CONTROLFILE)
  • 重做日志(REDO LOG)
  • 参数文件(spfile / pfile)
cp -r /u01/app/oracle/oradata /backup/oracle/cold/

✅ 简单粗暴
❌ 停机、恢复慢


四、自动备份(crontab)

示例:每天凌晨备份

crontab -e
0 2 * * * /u01/scripts/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 + 归档日志
  • 每天全备或增量
  • 备份异地存储
  • 定期做恢复演练

如果你愿意,可以告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 是否生产环境
  • 是否需要自动定时备份脚本

我可以给你定制一套完整备份方案。

0 踩