记一次数据库恢复-ORA-01194

来源:这里教程网 时间:2026-03-03 14:32:41 作者:

尝试打开数据库时,发现打不开 SQL> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-01194: 文件 1 需要更多的恢复来保持一致性 ORA-01110: 数据文件 1: 'E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF' SQL> select log_mode from v$database; LOG_MODE ------------ NOARCHIVELOG SQL> SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSAUX01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\UNDOTBS01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\USERS01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\EXAMPLE01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_RP01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_BI01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_IND01.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA02.DBF E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA03.DBF NAME -------------------------------------------------------------------------------- E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA04.DBF 已选择12行。 SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile;      FILE# TO_CHAR(CHECK ---------- -------------          1     138620706          2     138620706          3     138620706          4     138620706          5     138620706          6     138620706          7     138620706          8     138620706          9     138620706         10     138620706         11     138620706      FILE# TO_CHAR(CHECK ---------- -------------         12     138620706 已选择12行。 SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file; 未选定行 SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile_header;      FILE# TO_CHAR(CHECK ---------- -------------          1     138620706          2     138620706          3     138620706          4     138620706          5     138620706          6     138620706          7     138620706          8     138620706          9     138620706         10     138620706         11     138620706      FILE# TO_CHAR(CHECK ---------- -------------         12     138620706 已选择12行。 SQL> desc v$LOG  名称                                      是否为空? 类型  ----------------------------------------- -------- ----------------------------  GROUP#                                             NUMBER  THREAD#                                            NUMBER  SEQUENCE#                                          NUMBER  BYTES                                              NUMBER  BLOCKSIZE                                          NUMBER  MEMBERS                                            NUMBER  ARCHIVED                                           VARCHAR2(3)  STATUS                                             VARCHAR2(16)  FIRST_CHANGE#                                      NUMBER  FIRST_TIME                                         DATE  NEXT_CHANGE#                                       NUMBER  NEXT_TIME                                          DATE SQL> select group#, first_change# from v$log;     GROUP# FIRST_CHANGE# ---------- -------------          1     138617722          3     138620706          2     138619288 SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO02.LOG E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO01.LOG SQL> recover database using backup controlfile until cancel; ORA-00279: 更改 138620706 (在 11/16/2019 05:19:55 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\YSORCL\ARCHIVELOG\2019_11_18\O1_MF_1_93 0_%U_.ARC ORA-00280: 更改 138620706 (用于线程 1) 在序列 #930 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG 已应用的日志。 完成介质恢复。 SQL> SQL> SQL> alter database open reset logs; alter database open reset logs                     * 第 1 行出现错误: ORA-02288: 无效的 OPEN 模式 SQL> alter database open resetlogs; 数据库已更改。 SQL> SQL> select open_mode, log_mode, name from v$database; OPEN_MODE            LOG_MODE     NAME -------------------- ------------ --------- READ WRITE           NOARCHIVELOG YSORCL SQL> SQL> 这个数据库最初的问题是因为控制文件头冲突,重建了控制文件。重建之后,打开提示此错误。 问题关键在于找出控制文件与数据文件,重做日志文件的SCN。此处发现,v$datafile_header的checkpoint_change#与 重做日志文件组3的first_change#是匹配的。 如果还不行,估计只有大招:_allow_resetlogs_corruption= TRUE

相关推荐