DBID(可通过RMAN> list incarnation of database;获取)、DB_UNIQUE_NAME(通过SHOW PARAMETER DB_UNIQUE_NAME查看),这些信息是恢复的关键标识。/u01/backup),且文件完整性未受损(可通过RMAN> validate backupset <备份集ID>;验证)。~/.bash_profile或/etc/profile,添加以下变量(根据实际安装路径调整):export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
执行source ~/.bash_profile使变量生效。lsnrctl start
RMAN是Oracle官方推荐的物理备份恢复工具,适用于数据文件、控制文件、归档日志的恢复。
若备份集包含完整的全量备份及所有归档日志,可直接恢复至最新状态:
rman target /
# 启动数据库至NOMOUNT状态(仅加载控制文件)
STARTUP NOMOUNT;
# 恢复控制文件(若控制文件损坏,需指定备份路径)
RESTORE CONTROLFILE FROM '/u01/backup/controlfile_backup.bkp';
ALTER DATABASE MOUNT; # 挂载数据库(加载控制文件以识别数据文件)
# 恢复数据库至最新状态
RESTORE DATABASE;
RECOVER DATABASE;
# 打开数据库(若使用了RESETLOGS,需指定)
ALTER DATABASE OPEN RESETLOGS; # 仅在恢复至特定时间点或控制文件重建后使用
若存在增量备份(如Level 1),需先恢复全量备份,再应用增量备份及归档日志:
rman target /
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u01/backup/controlfile_backup.bkp';
ALTER DATABASE MOUNT;
# 恢复全量备份
RESTORE DATABASE;
# 应用增量备份(假设增量备份标签为'inc_20250901')
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
# 应用归档日志至最新
RECOVER DATABASE;
ALTER DATABASE OPEN;
若需恢复至特定时间点(如误删除数据前),需指定时间戳:
rman target /
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u01/backup/controlfile_backup.bkp';
ALTER DATABASE MOUNT;
# 恢复数据库至指定时间(格式:YYYY-MM-DD HH24:MI:SS)
RUN {
SET UNTIL TIME "TO_DATE('2025-09-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
ALTER DATABASE OPEN RESETLOGS; # 必须使用RESETLOGS,因恢复至非当前时间
若仅单个数据文件损坏(如/u01/oradata/orcl/users01.dbf),可单独恢复该文件:
rman target /
# 确定数据文件编号(通过RMAN> list datafile;)
RESTORE DATAFILE 3; # 假设数据文件编号为3
RECOVER DATAFILE 3;
# 将数据文件联机(需先确认表空间状态)
SQL> ALTER DATABASE DATAFILE 3 ONLINE;
若物理备份不可用,可通过逻辑导出/导入工具恢复数据(需提前有逻辑备份)。
确保逻辑备份文件(如full_db.dmp)已传输至Debian系统的DATA_PUMP_DIR目录(默认路径为$ORACLE_BASE/admin/$ORACLE_SID/dpdump)。
impdp system/password@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=full_db.dmp LOGFILE=full_restore.log FULL=Y
FULL=Y:导入整个数据库;LOGFILE:指定日志文件路径,便于排查错误。impdp system/password@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=users_ts.dmp LOGFILE=users_restore.log TABLESPACES=USERS
TABLESPACES:指定需导入的表空间名称。impdp system/password@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_table.dmp LOGFILE=sales_restore.log TABLES=sales.hr.sales
TABLES:指定需导入的表(格式:schema.table)。SQL> SELECT status FROM v$instance; -- 应返回'OPEN'
SQL> SELECT open_mode FROM v$database; -- 应返回'READ WRITE'(非归档模式下为'READ ONLY')
SELECT * FROM hr.employees WHERE employee_id = 100;),确认数据已恢复。RMAN> delete obsolete;自动清理)。SYSDBA身份执行(rman target / as sysdba)。FLASHBACK DATABASE TO TIMESTAMP快速恢复(需提前配置闪回恢复区)。