Oracle数据库在CentOS上的备份需结合物理备份(直接复制数据库文件)与逻辑备份(导出数据对象),以满足不同恢复场景需求:
expdp(数据泵导出)工具,按用户、表或模式导出数据,适合小规模数据迁移、特定表恢复或跨数据库版本兼容场景。逻辑备份可作为物理备份的补充,但不适用于大规模数据库的全量恢复。RMAN是Oracle内置的物理备份工具,需通过configure命令设置关键参数:
-- 设置保留策略:保留2份冗余备份(自动删除旧备份)
configure retention policy to redundancy 2;
-- 设置恢复窗口:保留7天内可恢复的备份(满足业务连续性要求)
configure retention policy to recovery window of 7 days;
-- 开启归档日志模式(物理备份必需)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
RMAN脚本示例(全库+归档日志备份):
run {
allocate channel c1 device type disk;
backup database plus archivelog format '/backup/oracle/rman_%d_%s_%p.bak';
release channel c1;
}
expdp需通过参数文件配置,支持压缩(减少备份文件大小)和并行导出(提高备份速度):
# exp_rman.par参数文件内容
userid=rman_user/password@orcl
file=/backup/oracle/exp_rman.dmp
log=/backup/oracle/exp_rman.log
compression=all # 启用压缩
parallel=2 # 并行导出(2个线程)
导出脚本示例:
#!/bin/bash
source /home/oracle/.bash_profile
expdp parfile=exp_rman.par
使用crontab实现自动化备份,避免人工遗漏。需根据备份频率(每日、每周、每月)设置不同的执行时间:
0 2 * * * /bin/bash /backup/oracle/rman_backup.sh >> /backup/oracle/rman_backup.log 2>&1
0 3 * * 0 /bin/bash /backup/oracle/expdp_incremental.sh >> /backup/oracle/expdp_backup.log 2>&1
0 4 1 * * /bin/bash /backup/oracle/archive_backup.sh >> /backup/oracle/archive_backup.log 2>&1
/backup/oracle/
├── rman_backup/ # RMAN物理备份
├── expdp_backup/ # expdp逻辑备份
├── daily_backup/ # 每日备份
├── weekly_backup/ # 每周备份
└── monthly_backup/ # 每月备份
find命令自动删除超过保留期限的备份文件(如7天前):find /backup/oracle/rman_backup -type f -name "*.bak" -mtime +7 -exec rm -f {} \;
find /backup/oracle/expdp_backup -type f -name "*.dmp" -mtime +7 -exec rm -f {} \;
RMAN validate命令验证物理备份的可恢复性:RMAN> validate backupset 12345; -- 替换为实际备份集编号
RMAN> restore database from backupset 12345;
RMAN> recover database;
oracle用户和oinstall组,确保备份脚本有读写权限:chown -R oracle:oinstall /backup/oracle
chmod -R 750 /backup/oracle
orapwd创建密码文件),或通过TNS_ADMIN配置加密连接。通过以上策略,可实现Oracle数据库在CentOS上的高可用备份,兼顾数据安全性与系统性能。需根据业务需求调整备份频率、保留期限和存储路径,确保备份策略符合企业SLA(服务级别协议)要求。