ORACLE_HOME(如/u01/app/oracle/product/11.2.0/dbhome_1)、PATH(包含$ORACLE_HOME/bin)环境变量已正确设置。SYSDBA权限的用户登录SQL*Plus(本地数据库可直接用sqlplus / as sysdba;远程数据库需用sqlplus username/password@hostname:port/service_name)。适用场景:数据库无法启动(如所有数据文件.dbf丢失、控制文件损坏),且有完整的冷备(一致性备份)和归档日志。
操作步骤:
STARTUP NOMOUNT PFILE='/path/to/initORCL.ora'; -- 指定初始化参数文件路径
cp)将备份的数据文件复制到原目录(如/u01/app/oracle/oradata/ORCL/)。cp /backup/controlfile_backup.ctl /u01/app/oracle/oradata/ORCL/control01.ctl)。RECOVER DATABASE; -- 自动应用归档日志和当前联机重做日志,直到数据库一致
ALTER DATABASE OPEN;
适用场景:非关键表空间(如用户自定义表空间)的某个数据文件损坏,数据库仍可正常运行。
操作步骤:
STARTUP MOUNT; -- 若控制文件未损坏,可直接用OPEN状态
cp命令将备份的数据文件复制到原目录。RECOVER DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf'; -- 指定损坏的数据文件路径
ALTER DATABASE OPEN;
适用场景:归档日志文件丢失或损坏,导致恢复过程报错(如ORA-00279)。
操作步骤:
V$RECOVERY_LOG视图查看需要的归档日志序列号。cp命令还原缺失的日志文件。RECOVER DATABASE命令,直到无错误提示。ALTER DATABASE OPEN;
适用场景:数据库未开启归档模式,只能进行全备还原,无法恢复到最新状态。
操作步骤:
SHUTDOWN IMMEDIATE;
ALTER DATABASE CLEAR LOGFILE GROUP 1; -- 替换为损坏的日志组编号
ALTER DATABASE OPEN RESETLOGS; -- 重置重做日志,数据库会丢失归档模式下的所有未备份数据
ARCHIVELOG)可支持完全恢复(恢复到故障前最后一次提交的状态),建议生产环境始终开启。可通过ARCHIVE LOG LIST命令查看当前模式,用ALTER DATABASE ARCHIVELOG;开启。