CentOS下Oracle备份恢复方法
导读:一、备份方法 1. RMAN(Recovery Manager)备份(官方推荐) RMAN是Oracle内置的物理备份工具,支持全备份、增量备份、归档日志备份,且能自动管理备份文件。 准备工作:确保数据库处于归档模式(若未开启,需执行sh...
一、备份方法
1. RMAN(Recovery Manager)备份(官方推荐)
RMAN是Oracle内置的物理备份工具,支持全备份、增量备份、归档日志备份,且能自动管理备份文件。
- 准备工作:确保数据库处于归档模式(若未开启,需执行
shutdown immediate→startup mount→alter database archivelog→alter database open);创建专用备份目录(如/oracle/backup),并赋予Oracle用户读写权限(chown -R oracle:oinstall /oracle/backup)。 - 全量备份:通过RMAN执行
BACKUP DATABASE PLUS ARCHIVELOG命令,将数据文件、控制文件、归档日志一起备份。示例脚本:rman target / < < EOF run { allocate channel c1 device type disk; backup database format '/oracle/backup/full_%U.bak'; backup archivelog all delete input format '/oracle/backup/arch_%U.bak'; release channel c1; } EOF - 增量备份:基于上一次备份(全量或增量)备份变化的数据,分为累积增量(
INCREMENTAL LEVEL 1 CUMULATIVE)和差异增量(INCREMENTAL LEVEL 1)。示例(差异增量):rman target / < < EOF run { allocate channel c1 device type disk; backup incremental level 1 database format '/oracle/backup/incr_%U.bak'; release channel c1; } EOF - 自动化备份:通过CentOS的
crontab设置定时任务(如每天凌晨2点执行全备):crontab -e # 添加以下内容(需替换为实际路径) 0 2 * * * /bin/bash /home/oracle/scripts/rman_full_backup.sh > > /oracle/backup/backup.log 2> & 1
2. Oracle Data Pump(逻辑备份)
适用于需要跨平台迁移或选择性恢复的场景,备份为.dmp文件(包含结构和数据)。
- 创建目录对象:在Oracle中创建逻辑目录(对应Linux物理路径),并授权给需要使用的用户:
CREATE DIRECTORY backup_dir AS '/oracle/backup'; GRANT READ, WRITE ON DIRECTORY backup_dir TO scott; - 导出数据:使用
expdp工具导出指定模式(如scott)或整个数据库:expdp scott/tiger@orcl schemas=scott directory=backup_dir dumpfile=scott_backup.dmp logfile=expdp_scott.log - 导入数据:若需恢复,使用
impdp工具导入(可指定TABLE_EXISTS_ACTION=REPLACE覆盖现有表):impdp scott/tiger@orcl schemas=scott directory=backup_dir dumpfile=scott_backup.dmp logfile=impdp_scott.log
3. 文件系统级备份(rsync)
适用于快速备份数据文件、控制文件、重做日志等物理文件,无需依赖Oracle工具。
- 停止数据库(可选但推荐,确保数据一致性):
systemctl stop oracle-xe # CentOS 7下Oracle XE的服务名 - 同步文件:使用
rsync命令将Oracle数据目录(如/u01/app/oracle/oradata/orcl)同步到备份服务器:rsync -avz --progress /u01/app/oracle/oradata/orcl/ oracle@backup-server:/backup/oracle_data/ - 启动数据库:
systemctl start oracle-xe
4. 控制文件与SPFILE备份
控制文件记录数据库结构,SPFILE存储初始化参数,需定期备份(建议与数据文件同步)。
- 自动备份控制文件:通过RMAN开启自动备份(默认备份到
CONTROLFILE AUTOBACKUP目录):CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/backup/controlfile_%F.bak'; - 手动备份SPFILE:将SPFILE复制为PFILE(文本格式),再备份PFILE:
CREATE PFILE='/oracle/backup/spfile_backup.pfile' FROM SPFILE;
二、恢复方法
1. RMAN恢复(物理恢复)
根据备份类型(全量/增量)和故障场景(完全恢复/时间点恢复)选择恢复方式。
- 完全恢复(全备+归档日志):适用于数据库完全损坏但备份完整的情况。步骤如下:
- 启动数据库到
NOMOUNT状态:sqlplus / as sysdba startup nomount; - 恢复控制文件(若控制文件损坏,需从自动备份中恢复):
rman target / RESTORE CONTROLFILE FROM '/oracle/backup/controlfile_XXXX.bak'; ALTER DATABASE MOUNT; - 恢复数据文件:
RECOVER DATABASE; - 打开数据库:
ALTER DATABASE OPEN;
- 启动数据库到
- 时间点恢复(PITR):将数据库恢复到指定时间(如误删除数据前),需归档日志支持。示例(恢复到2025-11-01 10:00):
rman target / RUN { SET UNTIL TIME "TO_DATE('2025-11-01 10:00', 'YYYY-MM-DD HH24:MI')"; RESTORE DATABASE; RECOVER DATABASE; } ALTER DATABASE OPEN RESETLOGS; -- 打开后需重置日志(会丢失恢复点后的数据)
2. Data Pump恢复(逻辑恢复)
若数据文件损坏但逻辑备份(.dmp)存在,可使用impdp恢复。
- 恢复到原用户:
impdp scott/tiger@orcl directory=backup_dir dumpfile=scott_backup.dmp logfile=impdp_restore.log - 恢复到新用户:添加
REMAP_SCHEMA参数(将原用户scott映射到新用户scott_new):impdp scott/tiger@orcl directory=backup_dir dumpfile=scott_backup.dmp logfile=impdp_restore.log REMAP_SCHEMA=scott:scott_new
3. 控制文件恢复
若控制文件损坏,需从自动备份中恢复(需提前开启CONTROLFILE AUTOBACKUP)。
- 步骤:
- 启动数据库到
NOMOUNT状态。 - 使用RMAN恢复控制文件:
rman target / RESTORE CONTROLFILE FROM '/oracle/backup/controlfile_XXXX.bak'; ALTER DATABASE MOUNT; - 恢复并打开数据库(同完全恢复步骤)。
- 启动数据库到
4. Flashback技术(快速恢复)
Oracle的闪回功能可快速撤销误操作(如误删除表、误truncate),无需恢复备份。
- 启用闪回数据库:需提前配置(
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G;ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/oracle/flashback';ALTER DATABASE ARCHIVELOG;ALTER DATABASE FLASHBACK ON)。 - 闪回到指定时间点:
SHUTDOWN IMMEDIATE; STARTUP MOUNT; FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-11-01 10:00', 'YYYY-MM-DD HH24:MI'); ALTER DATABASE OPEN RESETLOGS; - 闪回表:恢复单个表(需开启行移动):
ALTER TABLE scott.emp ENABLE ROW MOVEMENT; FLASHBACK TABLE scott.emp TO TIMESTAMP TO_TIMESTAMP('2025-11-01 09:30', 'YYYY-MM-DD HH24:MI');
5. 恢复注意事项
- 备份验证:定期检查备份文件的完整性和可恢复性(如执行
RESTORE VERIFYONLY命令)。 - 测试恢复:每季度进行一次恢复测试,确保备份有效。
- 保留策略:根据业务需求设置备份保留期限(如全备保留7天,归档日志保留3天),避免磁盘空间耗尽。
- 日志管理:归档日志需妥善保存(如异地备份),否则无法完成时间点恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS下Oracle备份恢复方法
本文地址: https://pptw.com/jishu/746338.html
