在进行任何恢复操作前,请务必完成以下关键步骤:
startup mount);shutdown immediate; startup mount)。archive log list查看状态,alter database archivelog;开启)。RMAN是Oracle官方提供的专业备份恢复工具,支持全量、增量、归档日志恢复,适用于大多数故障场景。
适用于数据库控制文件、数据文件全部损坏的情况,步骤如下:
# 启动RMAN并连接目标数据库
rman target /
# 执行全库恢复(自动恢复控制文件、数据文件、归档日志)
run {
allocate channel ch1 type disk;
restore database; # 恢复数据文件和控制文件
recover database; # 应用归档日志和重做日志
alter database open resetlogs; # 重置联机重做日志,打开数据库
release channel ch1;
}
exit;
说明:resetlogs会创建新的重做日志序列,需注意后续备份需基于此次恢复。
适用于误删除数据、归档日志丢失等情况,需恢复到指定时间点或SCN(系统改变号)。步骤如下:
# 启动RMAN并连接目标数据库
rman target /
# 执行不完全恢复(以时间点为例)
run {
allocate channel ch1 type disk;
restore database; # 恢复数据文件
recover database until time "to_timestamp('2025-10-25 14:30:00', 'yyyy-mm-dd hh24:mi:ss')"; # 恢复到指定时间
alter database open resetlogs; # 重置日志并打开
release channel ch1;
}
exit;
注意:不完全恢复后,数据库将丢失指定时间点之后的所有数据。
若仅某个数据文件损坏(如/u01/oradata/ORCL/users01.dbf丢失),可单独恢复该文件:
# 启动RMAN并连接目标数据库
rman target /
# 执行单个数据文件恢复
run {
allocate channel ch1 type disk;
restore datafile '/u01/oradata/ORCL/users01.dbf'; # 指定数据文件路径
recover datafile '/u01/oradata/ORCL/users01.dbf'; # 应用归档日志
alter database datafile '/u01/oradata/ORCL/users01.dbf' online; # 将数据文件设为在线
release channel ch1;
}
exit;
说明:恢复前需确认数据文件所属表空间(select tablespace_name, file_name from dba_data_files;)。
Flashback技术适用于误删除/误更新且未提交或提交时间较短的数据恢复,无需依赖备份。
恢复表中误删除的单行或多行数据:
-- 查询1小时前的数据(需开启闪回查询)
SELECT * FROM employees AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '1' HOUR
WHERE employee_id = 101;
-- 恢复数据到原表
INSERT INTO employees
SELECT * FROM employees AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '1' HOUR
WHERE employee_id = 101;
将整个表恢复到指定时间点:
-- 开启表的行移动(需DBA权限)
ALTER TABLE employees ENABLE ROW MOVEMENT;
-- 闪回表到1小时前
FLASHBACK TABLE employees TO TIMESTAMP SYSTIMESTAMP - INTERVAL '1' HOUR;
将整个数据库恢复到指定时间点,需提前配置闪回恢复区(FRA)和归档模式:
-- 启用闪回数据库(需SYSDBA权限)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
-- 执行闪回(需确认闪回保留时间)
FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-10-25 14:30:00', 'yyyy-mm-dd hh24:mi:ss');
ALTER DATABASE OPEN RESETLOGS;
说明:闪回数据库需消耗大量闪回恢复区空间,建议预留足够容量。
若物理备份不可用,可使用逻辑备份(expdp导出、impdp导入)恢复数据,适用于跨平台、跨版本或部分数据恢复。
# 使用expdp导出整个数据库(需SYSDBA权限)
expdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=export.log full=y
# 使用impdp导入备份(需SYSDBA权限)
impdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=import.log full=y
说明:directory需指向Oracle创建的逻辑目录(如DATA_PUMP_DIR),可通过select * from dba_directories;查看。
SYSBACKUP权限)。$ORACLE_BASE/diag/rdbms/<SID>/<SID>/trace/alert_<SID>.log)和跟踪日志定位问题。