一、Oracle 备份核心概念
逻辑备份:使用exp/expdp导出数据,适用于迁移或少量数据。
物理备份:备份数据文件、控制文件等,分为冷备份(停机)和热备份(归档模式)。
RMAN备份:Oracle官方备份工具,支持增量备份、块级恢复。
二、不同版本备份操作指南
1. Oracle 9i/10g/11g 传统版本
特点:支持RMAN,但参数与高版本略有差异。
① 冷备份(一致性备份)
# 1. 关闭数据库
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF
# 2. 备份数据文件、控制文件、密码文件
tar -czf /backup/oradata_$(date +%Y%m%d).tar.gz $ORACLE_HOME/oradata/$ORACLE_SID/
# 3. 启动数据库
sqlplus / as sysdba <<EOF
startup;
EOF
② 热备份(归档模式+RMAN)
# 开启归档模式(如未开启)
sqlplus / as sysdba <<EOF
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
EOF
# RMAN全备脚本
rman target / <<EOF
backup database plus archivelog delete input;
backup current controlfile;
EOF
③ 逻辑导出(exp/expdp)
# 传统导出(exp,适用于小数据量)
exp system/manager file=/backup/full_$(date +%Y%m%d).dmp log=/backup/exp.log full=y
# 数据泵导出(expdp,推荐)
expdp system/manager directory=DATA_PUMP_DIR dumpfile=full_$(date +%Y%m%d).dmp full=y
2. Oracle 12c/18c/19c 现代版本
特点:支持PDB/CDB架构,备份需区分容器数据库。
① PDB级别备份(RMAN)
# 进入RMAN
rman target /
# 备份指定PDB
BACKUP PLUGGABLE DATABASE pdb1 PLUS ARCHIVELOG;
# 备份整个CDB(含所有PDB)
BACKUP DATABASE PLUS ARCHIVELOG;
② 多租户环境逻辑导出
# 导出整个CDB(需使用expdp的full=yes)
expdp system/manager@cdb1 directory=DATA_PUMP_DIR dumpfile=cdb_full.dmp full=y
# 导出单个PDB
expdp system/manager@pdb1 directory=DATA_PUMP_DIR dumpfile=pdb1.dmp
③ 快速备份(快照技术)
若存储支持快照(如ZFS、ASM),可结合数据库热备模式:
-- 将表空间置于热备模式
ALTER TABLESPACE users BEGIN BACKUP;
-- 执行存储快照
ALTER TABLESPACE users END BACKUP;
3. Oracle 21c+ 最新版本
特点:增强自动化与云集成。
① 使用RMAN的自动备份优化
# 启用自动备份控制文件
CONFIGURE CONTROLFILE AUTOBACKUP ON;
# 增量备份(基于SCN变化)
BACKUP INCREMENTAL LEVEL 1 DATABASE;
② 云端备份集成
通过BACKUP TO SERVICE直接备份到云存储(如OCI):
BACKUP DATABASE TO SERVICE "my_cloud_backup";
三、跨版本兼容性注意事项
exp/expdp版本限制:
expdp system/manager version=11.2.0.4 dumpfile=old_version.dmp
2.RMAN跨版本恢复:
9i-11g:RMAN备份通常可跨小版本恢复。
12c+:需确保目标数据库版本 ≥ 备份版本。
3.字符集兼容性:
四、自动化备份脚本示例
#!/bin/bash
# 适用于Oracle 19c的RMAN全备脚本(保留7天备份)
exportORACLE_SID=ORCL
exportDATE=$(date +%Y%m%d)
rman target / log=/backup/logs/full_$DATE.log <<EOF
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
DELETE OBSOLETE;
CROSSCHECK BACKUP;
DELETE EXPIRED BACKUP;
EOF
五、备份后验证
1.检查备份有效性:
rman target /
RESTORE DATABASE VALIDATE;
2.查看备份集:
SELECT * FROM V$BACKUP_SET;
3.模拟恢复测试(建议定期执行):
# 在测试环境恢复备份
rman target / catalog=rman_cat <<EOF
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/backup/controlfile.bkp';
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
EOF
六、总结:版本选择建议
| 版本 | 推荐备份方式 | 核心工具 |
|---|
| 9i/10g/11g | RMAN全备 + 归档 | exp/expdp辅助 |
| 12c/18c/19c | RMAN多租户备份 | expdp(PDB级别) |
| 21c+ | RMAN增量 + 云备份 | ZDLRA(零数据丢失恢复) |