Linux Oracle数据库恢复步骤因故障类型而异,以下是常见恢复方式及操作步骤:
rman target /
run {
shutdown immediate;
startup mount;
restore database;
recover database;
alter database open resetlogs;
}
说明:适用于控制文件、数据文件损坏或误删除场景,需确保归档日志完整。
rman target /
run {
restore tablespace <表空间名> datafile '<文件路径>';
recover tablespace <表空间名> datafile '<文件路径>';
alter database datafile '<文件路径>' online;
}
说明:适用于部分数据文件损坏,需指定文件路径。
rman target /
run {
set until time "to_date('2025-08-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
restore database;
recover database using backup controlfile until time "to_date('2025-08-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS')";
alter database open resetlogs;
}
说明:通过闪回日志或归档日志恢复到指定时间点。
-- 检查闪回日志可用性
SELECT * FROM v$flashback_database_log;
-- 执行闪回
FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-08-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS');
ALTER DATABASE OPEN;
说明:快速回退整个数据库到历史状态,需提前配置闪回区。
-- 启用行移动
ALTER TABLE <表名> ENABLE ROW MOVEMENT;
-- 闪回表到指定时间
FLASHBACK TABLE <表名> TO TIMESTAMP TO_TIMESTAMP('2025-08-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS');
说明:仅恢复表数据,不影响其他对象。
expdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=backup.dmp full=y logfile=export.log
说明:导出数据库对象和数据,用于逻辑恢复。
impdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=backup.dmp logfile=import.log full=y
说明:将备份数据导入目标数据库,覆盖现有数据。
oracle用户执行RMAN命令,或以SYSDBA身份操作。alert.log和trace文件排查错误。参考来源: