Debian 上 Oracle 的 sqlplus 备份与恢复实践
一 概念与工具选择
- SQL*Plus 是 Oracle 的命令行客户端,本身不是备份工具;通常通过它执行 Data Pump(expdp/impdp) 的逻辑导出导入,或在 RMAN 中执行开关归档、恢复等命令。
- Data Pump(expdp/impdp) 适合跨库迁移、按用户/表/全库导出与导入,属于逻辑备份。
- RMAN 是 Oracle 官方推荐的物理备份工具,支持全库、增量、归档日志备份与时间点恢复,适合生产环境的快速恢复。
- 在 Debian 上,上述工具均可使用;建议结合 crontab 做定时任务,并将备份文件通过 scp/rsync 传至异地存储,定期做还原演练验证可用性。
二 使用 Data Pump 进行逻辑备份与恢复
- 前置准备
- 以管理员身份登录:sqlplus / as sysdba
- 创建 Oracle 目录对象并授权(指向操作系统目录):
- CREATE DIRECTORY dpump AS ‘/opt/oracle/backup’;
- GRANT READ,WRITE ON DIRECTORY dpump TO scott;
- 确保操作系统目录存在且权限正确:mkdir -p /opt/oracle/backup && chown oracle:oinstall /opt/oracle/backup
- 全库导出示例
- expdp system/password@orcl DIRECTORY=dpump DUMPFILE=full_$(date +%F).dmp LOGFILE=full_$(date +%F).log FULL=y PARALLEL=2
- 按用户导出示例
- expdp scott/tiger@orcl DIRECTORY=dpump DUMPFILE=scott_$(date +%F).dmp LOGFILE=scott_$(date +%F).log SCHEMAS=scott PARALLEL=2
- 导入示例
- 全库导入:impdp system/password@orcl DIRECTORY=dpump DUMPFILE=full_2025-11-29.dmp LOGFILE=imp_full_2025-11-29.log FULL=y PARALLEL=2
- 按用户导入:impdp scott/tiger@orcl DIRECTORY=dpump DUMPFILE=scott_2025-11-29.dmp LOGFILE=imp_scott_2025-11-29.log SCHEMAS=scott REMAP_SCHEMA=scott:scott_new PARALLEL=2
- 常用参数说明
- DIRECTORY:Oracle 目录对象(非系统路径)
- DUMPFILE/LOGFILE:导出/导入文件与日志
- FULL/SCHEMAS/TABLES:导出范围
- PARALLEL:并行度(提升速度)
- REMAP_SCHEMA:导入时重映射用户(跨库迁移常用)
- TABLE_EXISTS_ACTION=REPLACE/APPEND/SKIP:导入时目标对象已存在的处理策略
- 自动化与异地备份示例(简化版)
- 在 /opt/oracle/scripts/backup_dp.sh 中:
- 创建当天 DMP 与 LOG
- 执行 expdp(按需要选择 FULL 或 SCHEMAS)
- 打包压缩:tar czf full_$(date +%F).tar.gz full_$(date +%F).dmp full_$(date +%F).log
- 传输到备份服务器:scp full_$(date +%F).tar.gz backup@192.168.1.100:/data/backup/
- 加入 crontab(每日 2 点):0 2 * * * /opt/oracle/scripts/backup_dp.sh >> /var/log/oracle_dp.log 2>&1
- 提示:生产环境建议使用 expect 或 SSH 密钥免密传输,避免明文密码与交互阻塞。
三 使用 RMAN 进行物理备份与恢复
- 归档模式与基础配置
- 检查归档:archive log list;
- 开启归档(需停机一次):
- sqlplus / as sysdba
- SHUTDOWN IMMEDIATE;
- STARTUP MOUNT;
- ALTER DATABASE ARCHIVELOG;
- ALTER DATABASE OPEN;
- 全量备份示例
- rman target /
- RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
- 增量备份示例
- RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
- 恢复示例
- 介质恢复(数据文件损坏等):
- RMAN> STARTUP FORCE MOUNT;
- RMAN> RESTORE DATABASE;
- RMAN> RECOVER DATABASE;
- RMAN> ALTER DATABASE OPEN;
- 时间点恢复(PITR):
- RMAN> RUN {
- SET UNTIL TIME ‘2025-11-29 10:00:00’;
- RESTORE DATABASE;
- RECOVER DATABASE;
- }
- RMAN> ALTER DATABASE OPEN RESETLOGS;
- 适用场景
- RMAN 适合需要快速恢复、最小化停机时间的生产库;逻辑导出(expdp)更适合跨平台迁移、部分对象恢复与开发测试环境。
四 备份策略与运维要点
- 策略建议
- 生产库:以 RMAN 全量 + 每日增量 + 归档日志备份 为主,保障可恢复到任意时间点;
- 迁移/部分恢复:使用 Data Pump 做按用户/按表导出导入;
- 保留周期:本地保留近 7–14 天,异地保留 30–90 天;
- 安全与合规
- 备份文件加密(如 GPG),目录权限最小化,传输走内网或加密通道;
- 可用性与演练
- 定期在测试环境做 还原演练,校验 DMP 或 RMAN 备份的可用性与完整性;
- 监控与告警
- 记录 expdp/impdp 与 RMAN 日志,监控任务退出码与备份文件大小,异常及时告警。