SYSDBA权限;ls -lh查看文件大小,或使用RMAN VALIDATE BACKUPSET命令验证RMAN备份完整性;ARCHIVE LOG LIST命令确认)。RMAN(Recovery Manager)是Oracle官方推荐的物理备份恢复工具,支持全量、增量及归档日志恢复。
# 启动RMAN并连接目标数据库(SYSDBA权限)
rman target /
# 恢复数据库(自动匹配备份文件)
RMAN> RESTORE DATABASE;
# 应用归档日志(恢复到最新状态)
RMAN> RECOVER DATABASE;
# 打开数据库(若恢复到当前时间点)
RMAN> ALTER DATABASE OPEN;
# 启动RMAN并连接目标数据库
rman target /
# 设置恢复点(时间或SCN,例如恢复到2025-09-18 12:00:00)
RMAN> SET UNTIL TIME "TO_DATE('2025-09-18 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
# 恢复数据库
RMAN> RESTORE DATABASE;
# 应用归档日志
RMAN> RECOVER DATABASE;
# 打开数据库(需重置日志,因恢复到非当前时间点)
RMAN> ALTER DATABASE OPEN RESETLOGS;
若控制文件丢失,需先通过备份恢复,再恢复数据库:
# 启动RMAN并连接目标数据库
rman target /
# 恢复控制文件(需指定备份路径)
RMAN> RESTORE CONTROLFILE FROM '/backup/controlfile_backup.bck';
# 挂载数据库
RMAN> ALTER DATABASE MOUNT;
# 恢复数据库
RMAN> RESTORE DATABASE;
# 应用归档日志
RMAN> RECOVER DATABASE;
# 打开数据库(重置日志)
RMAN> ALTER DATABASE OPEN RESETLOGS;
若仅单个数据文件损坏,可单独恢复该文件:
# 启动RMAN并连接目标数据库
rman target /
# 恢复指定数据文件(例如datafile 2)
RMAN> RESTORE DATAFILE 2;
# 应用归档日志
RMAN> RECOVER DATAFILE 2;
# 将数据文件联机
RMAN> ALTER DATABASE DATAFILE 2 ONLINE;
若归档日志丢失,需补充备份的归档日志:
# 启动RMAN并连接目标数据库
rman target /
# 恢复归档日志(指定备份路径)
RMAN> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
# 然后手动输入归档日志路径,直到提示“Media recovery complete”
/backup),并在RMAN中通过CATALOG命令注册备份:RMAN> CATALOG START WITH '/backup';
SELECT * FROM V$DATABASE;确认数据库状态。EXPDP(数据泵导出)和IMPDP(数据泵导入)是Oracle的逻辑备份恢复工具,适用于表、用户或整个数据库的恢复。
# 启动SQL*Plus并以SYSDBA身份登录
sqlplus / as sysdba
# 创建恢复目录(若不存在)
SQL> CREATE DIRECTORY restore_dir AS '/path/to/restore';
# 授权用户访问恢复目录
SQL> GRANT READ, WRITE ON DIRECTORY restore_dir TO username;
# 退出SQL*Plus
SQL> EXIT;
# 执行IMPDP导入(全量恢复)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=full_db.dmp LOGFILE=full_restore.log FULL=Y;
# 执行IMPDP导入(指定表空间)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=users_ts.dmp LOGFILE=users_restore.log TABLESPACE_NAMES=USERS;
# 执行IMPDP导入(指定表)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=sales_table.dmp LOGFILE=sales_restore.log TABLES=SALES.EMPLOYEES;
若目标数据库已存在同名表,可使用REMAP_TABLE或TABLE_EXISTS_ACTION参数覆盖:
# 覆盖现有表(需指定REMAP_TABLE)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=data.dmp LOGFILE=overwrite.log REMAP_TABLE=username.old_table:username.new_table;
# 或使用TABLE_EXISTS_ACTION=REPLACE(替换现有表)
impdp username/password@orcl DIRECTORY=restore_dir DUMPFILE=data.dmp LOGFILE=replace.log TABLE_EXISTS_ACTION=REPLACE;
PARALLEL参数加速导入(如PARALLEL=4);SELECT COUNT(*) FROM schema.table;确认数据一致性。SELECT STATUS FROM V$INSTANCE;确认数据库状态为OPEN;HR.EMPLOYEES)的记录数,与备份前对比;以上步骤覆盖了Debian系统上Oracle数据库的常见恢复场景,实际操作中需根据具体问题调整参数(如备份路径、恢复点时间)。若恢复失败,建议查看RMAN或IMPDP的日志文件(如alert.log、restore.log),定位错误原因。