一、备份方法
RMAN是Oracle内置的物理备份工具,支持全备份、增量备份、归档日志备份,且能自动管理备份文件。
shutdown immediate→startup mount→alter database archivelog→alter database open);创建专用备份目录(如/oracle/backup),并赋予Oracle用户读写权限(chown -R oracle:oinstall /oracle/backup)。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
crontab设置定时任务(如每天凌晨2点执行全备):crontab -e
# 添加以下内容(需替换为实际路径)
0 2 * * * /bin/bash /home/oracle/scripts/rman_full_backup.sh >> /oracle/backup/backup.log 2>&1
适用于需要跨平台迁移或选择性恢复的场景,备份为.dmp文件(包含结构和数据)。
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
适用于快速备份数据文件、控制文件、重做日志等物理文件,无需依赖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
控制文件记录数据库结构,SPFILE存储初始化参数,需定期备份(建议与数据文件同步)。
CONTROLFILE AUTOBACKUP目录):CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/backup/controlfile_%F.bak';
CREATE PFILE='/oracle/backup/spfile_backup.pfile' FROM SPFILE;
二、恢复方法
根据备份类型(全量/增量)和故障场景(完全恢复/时间点恢复)选择恢复方式。
NOMOUNT状态:sqlplus / as sysdba
startup nomount;
rman target /
RESTORE CONTROLFILE FROM '/oracle/backup/controlfile_XXXX.bak';
ALTER DATABASE MOUNT;
RECOVER DATABASE;
ALTER DATABASE OPEN;
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; -- 打开后需重置日志(会丢失恢复点后的数据)
若数据文件损坏但逻辑备份(.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
若控制文件损坏,需从自动备份中恢复(需提前开启CONTROLFILE AUTOBACKUP)。
NOMOUNT状态。rman target /
RESTORE CONTROLFILE FROM '/oracle/backup/controlfile_XXXX.bak';
ALTER DATABASE MOUNT;
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');
RESTORE VERIFYONLY命令)。