Ubuntu 上 Oracle 数据库恢复步骤
一 准备与环境检查
su - oracleexport ORACLE_SID=ORCL; export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export PATH=$ORACLE_HOME/bin:$PATHLIST BACKUP; 查看备份集;必要时对备份文件做 MD5/SHA-256 校验,确保无损坏且可访问。二 使用 RMAN 进行物理恢复(整库/数据文件/控制文件)
STARTUP NOMOUNT;SET DBID):RESTORE CONTROLFILE FROM AUTOBACKUP;RESTORE CONTROLFILE FROM '/path/controlfile.bkp';ALTER DATABASE MOUNT;STARTUP MOUNT;RESTORE DATABASE;SET NEWNAME FOR DATAFILE 1 TO '/u02/oradata/ORCL/system01.dbf';SET NEWNAME FOR DATAFILE 2 TO '/u02/oradata/ORCL/sysaux01.dbf';RESTORE DATABASE;SWITCH DATABASE TO COPY; 或 SWITCH DATAFILE ALL;RECOVER DATABASE;ALTER DATABASE OPEN;ALTER DATABASE OPEN RESETLOGS;ALTER TABLESPACE users OFFLINE IMMEDIATE;RESTORE DATAFILE '/u02/oradata/ORCL/users01.dbf';RECOVER DATAFILE '/u02/oradata/ORCL/users01.dbf';ALTER TABLESPACE users ONLINE;RESTORE ARCHIVELOG FROM '/backup/archivelog/';RECOVER 阶段使用 USING BACKUP CONTROLFILE 指定控制文件来源。三 使用 Data Pump 进行逻辑恢复(expdp/impdp)
CREATE DIRECTORY dpump_dir AS '/u01/dpump';GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;impdp system/password@ORCL DIRECTORY=dpump_dir DUMPFILE=expdp_full.dmp FULL=Y LOGFILE=impdp_full.logimpdp system/password@ORCL DIRECTORY=dpump_dir DUMPFILE=expdp_user.dmp FROMUSER=scott TOUSER=scott LOGFILE=impdp_user.logTABLES=..., SCHEMAS=..., TABLESPACES=...)。四 时间点恢复与闪回
RUN { SET UNTIL TIME '2025-12-25 10:00:00'; RESTORE DATABASE; RECOVER DATABASE; }ALTER DATABASE OPEN RESETLOGS;FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-12-25 10:00:00','YYYY-MM-DD HH24:MI:SS');ALTER DATABASE OPEN RESETLOGS;SELECT * FROM schema.table AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE);五 恢复后验证与常见问题处理
SELECT OPEN_MODE FROM V$DATABASE;SELECT COUNT(*) FROM dba_objects;SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;FROM AUTOBACKUP;已挂载/打开时需用 TO 'filename' 指定非控制文件目录的目标文件。DEVICE TYPE 与通道配置。