SYSDBA
权限(如system
或专用sysdba
用户)。.dbf
)、归档日志文件(.arc
)和控制文件(.ctl
),且备份文件的Oracle版本与当前环境一致。export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1 # 替换为实际ORACLE_HOME路径
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl # 替换为实际数据库SID
SYSDBA
身份登录):sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;
控制文件是数据库的关键结构,记录数据文件、重做日志的位置等信息。若控制文件丢失或损坏,需先恢复:
CONTROL_FILES
指定目录(如/u01/oracle/oradata/yourdb/
),例如:cp /path/to/backup/controlfile/control01.ctl /u01/oracle/oradata/yourdb/control01.ctl
cp /path/to/backup/controlfile/control02.ctl /u01/oracle/oradata/yourdb/control02.ctl # 若有多个控制文件
sqlplus / as sysdba
SQL> STARTUP NOMOUNT;
数据文件存储实际业务数据,需将备份的数据文件复制到原目录(如/u01/oracle/oradata/yourdb/datafiles/
):
cp /path/to/backup/datafiles/*.dbf /u01/oracle/oradata/yourdb/datafiles/
归档日志记录了数据文件的变更,用于将数据库恢复到故障前的完整状态。将备份的归档日志复制到归档日志目录(如/u01/oracle/oradata/yourdb/archivelog/
):
cp /path/to/backup/archivelog/*.arc /u01/oracle/oradata/yourdb/archivelog/
SQL> ALTER DATABASE MOUNT;
RECOVER DATABASE
命令应用归档日志和重做日志,将数据库恢复到最新状态:SQL> RECOVER DATABASE;
若需恢复到特定时间点(如2025-08-29 10:00:00
),可使用:SQL> RECOVER DATABASE UNTIL TIME '2025-08-29 10:00:00';
若恢复过程中提示缺少归档日志,需补充对应日志文件后再次执行RECOVER DATABASE
。恢复完成后,使用ALTER DATABASE OPEN
命令打开数据库:
SQL> ALTER DATABASE OPEN;
若数据库处于NOARCHIVELOG
模式(未归档),且需强制打开(会丢失部分数据),可使用:
SQL> ALTER DATABASE OPEN RESETLOGS;
sqlplus username/password@yourdb
SQL> SELECT * FROM critical_table WHERE rownum <= 10;
SQL> SELECT STATUS FROM V$INSTANCE;
正常状态应为OPEN
。ARCHIVELOG
模式(可通过ARCHIVE LOG LIST
查看),以支持时间点恢复。chmod -R 755 /u01/oracle/oradata/yourdb/
)。