CentOS 下使用 SQL*Plus 的数据恢复技巧
一、快速判断与定位
sqlplus / as sysdba。select file#, error from v$recover_file;select file#, checkpoint_change# from v$datafile;select file#, checkpoint_change# from v$datafile_header;show parameter control_files; 确认控制文件位置与冗余。ps -ef|grep ora_dbw 找到 DBW 进程,进入 /proc/<PID>/fd 查找标记 (deleted) 的文件并拷贝回原路径。ALTER DATABASE CLEAR LOGFILE GROUP <n>; 清理损坏联机日志。二、SQL*Plus 手工介质恢复常用场景
RECOVER DATABASE;ALTER DATABASE OPEN;ALTER TABLESPACE <ts_name> OFFLINE IMMEDIATE;RECOVER TABLESPACE <ts_name>;ALTER TABLESPACE <ts_name> ONLINE;ALTER DATABASE DATAFILE <file#> OFFLINE;RECOVER DATAFILE <file#>;ALTER DATABASE DATAFILE <file#> ONLINE;ALTER DATABASE OPEN;ALTER DATABASE DATAFILE <file#> OFFLINE;RECOVER DATAFILE <file#>;ALTER DATABASE DATAFILE <file#> ONLINE;STARTUP NOMOUNT;RESTORE CONTROLFILE FROM '<backup_path>';(RMAN 操作)ALTER DATABASE MOUNT;RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ALTER DATABASE OPEN RESETLOGS;ps -ef|grep ora_dbw;cd /proc/<PID>/fd;RECOVER DATAFILE <file#>; 然后 ALTER DATABASE OPEN;。三、逻辑误操作恢复技巧
CREATE TABLE scott.t_recover AS SELECT * FROM scott.t_delete AS OF SCN <scn>;CREATE TABLE scott.t_recover AS SELECT * FROM scott.t_delete AS OF TIMESTAMP TO_TIMESTAMP('2025-01-01 12:00:00','YYYY-MM-DD HH24:MI:SS');四、实用清单与注意事项
CLEAR LOGFILE。