操作系统版本: [oracle@enmotech ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.7 (Maipo) 数据库版本 [oracle@enmotech ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 5月 31 10:23:55 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. 连接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 redo0日志的状态 列有四种状态: current: 当前日志组对应的脏块还没有全部从 data buffer 写入到 data file,含有实例恢复需要的信息,不能被覆盖 active: 日志组对应的脏块还没有完全从 data buffer 写入到 data file,含有实例恢复需要的信息,不能被覆盖 inactive; 日志组对应的脏块已经从 data buffer 写入到 data file,可以覆盖 unused: 新添加的日志组,还没有使用 redo文件损坏涉及到多种多样场景,具体场景可以分四大部分: 1、按照redo的状态可以分为current、active和inactive; 2、按照数据库归档模式可以分为归档和非归档; 3、按照脏块有没写入数据文件可以分为需要和不需要; 4、按照损坏时数据库的状态可以分为在线和关闭; 现在主要通过三部分来介绍redo文件恢复相关的内容: 1、current redo文件恢复介绍: 1.1 a、current redo文件损坏; b、数据库归档模式; c、不需要写入数据文件 d、实例正常关闭后损坏 场景模拟; 1.查看当前日志状态 SYS@orcl> col member for a30; SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 18 /u02/oradata/ORCL/redo03.log 200 NO CURRENT 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 16 /u02/oradata/ORCL/redo01.log 200 YES INACTIVE 2.关闭数据库,模拟current redolog损坏 [oracle@enmotech ORCL]$ echo 1 >> /u02/oradata/ORCL/redo03.log 3.打开数据库 ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 ORA-03113: 通信通道的文件结尾 进程 ID: 3845 会话 ID: 237 序列号: 62252 4.观察alter_sid.log报错 2020-05-31T11:05:52.415611+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_3804.trc: ORA-00313: ??????? 3 (???? 1) ??? ORA-00312: ???? 3 ?? 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: ?????????????? Additional information: 1 2020-05-31T11:05:52.415707+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_3804.trc: ORA-00313: ??????? 3 (???? 1) ??? ORA-00312: ???? 3 ?? 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: ?????????????? Additional information: 1 2020-05-31T11:05:52.416332+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3845.trc: ORA-00313: 无法打开日志组 1 (用于线程 ) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' USER (ospid: ): terminating the instance due to ORA error 2020-05-31T11:05:52.533550+08:00 System state dump requested by (instance=1, osid=3845), summary=[abnormal instance termination]. System State dumped to trace file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_diag_3786.trc 2020-05-31T11:05:52.641053+08:00 Dumping diagnostic data in directory=[cdmp_20200531110552], requested by (instance=1, osid=3845), summary=[abnormal instance termination]. 5.重新连接数据库,清除当前日志组数据 SYS@orcl> alter database clear unarchived logfile group 3; 数据库已更改。 6.打开数据库 SYS@orcl> alter database open; 数据库已更改。 1.2 a、current redo文件损坏; b、数据库非归档模式; c、不需要写入数据文件 d、实例正常关闭后损坏 场景模拟: 1.常看数据库归档状态和当前日志组 SYS@orcl> archive log list; 数据库日志模式 非存档模式 自动存档 禁用 存档终点 /u02/oradata/orcl_arch_log 最早的联机日志序列 17 当前日志序列 19 SYS@orcl> col member for a40; SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 0 /u02/oradata/ORCL/redo03.log 200 YES UNUSED 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 19 /u02/oradata/ORCL/redo01.log 200 NO CURRENT 2.关闭数据库,模拟current redolog损坏 SYS@orcl> shu immediate; 数据库已经关闭。 已经卸载数据库。 [oracle@enmotech ORCL]$ echo 1 >> /u02/oradata/ORCL/redo01.log 3.打开数据库 SYS@orcl> startup ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 ORA-03113: 通信通道的文件结尾 进程 ID: 5619 会话 ID: 237 序列号: 61537 4.观察alter_sid.log报错 2020-05-31T11:23:05.637817+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_5575.trc: ORA-00313: ??????? 1 (???? 1) ??? ORA-00312: ???? 1 ?? 1: '/u02/oradata/ORCL/redo01.log' ORA-27046: ?????????????? Additional information: 1 2020-05-31T11:23:05.638267+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_lgwr_5575.trc: ORA-00313: ??????? 1 (???? 1) ??? ORA-00312: ???? 1 ?? 1: '/u02/oradata/ORCL/redo01.log' ORA-27046: ?????????????? Additional information: 1 2020-05-31T11:23:05.639749+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_5619.trc: ORA-00313: 无法打开日志组 1 (用于线程 ) 的成员 ORA-00312: 联机日志 1 线程 1: '/u02/oradata/ORCL/redo01.log' USER (ospid: ): terminating the instance due to ORA error 2020-05-31T11:23:05.762325+08:00 System state dump requested by (instance=1, osid=5619), summary=[abnormal instance termination]. System State dumped to trace file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_diag_5558.trc 2020-05-31T11:23:05.848947+08:00 Dumping diagnostic data in directory=[cdmp_20200531112305], requested by (instance=1, osid=5619), summary=[abnormal instance termination]. 2020-05-31T11:23:06.877329+08:00 Instance terminated by USER, pid = 5619 5.重新连接数据库,清除当前日志组数据 SYS@orcl> alter database clear logfile group 1; 数据库已更改。 6.打开数据库 SYS@orcl> alter database open; 数据库已更改。 --------------------------------------------------------------------------------------------------------------------------------- 连接scott用户,创建test表,插入数据 [oracle@enmotech admin]$ sqlplus scott/tiger@orclpdb SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 5月 31 11:38:59 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. 上次成功登录时间: 星期一 5月 18 2020 20:26:08 +08:00 连接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SCOTT@orclpdb> create table test (id number); 表已创建。 SCOTT@orclpdb> insert into test(id) values (1); 已创建 1 行。 SCOTT@orclpdb> commit; 提交完成。 SCOTT@orclpdb> insert into test(id) values (2); 已创建 1 行。 (插入数据2,不进行提交) ---------------------------------------------------------------------------------------------------------------------------------- 1.3 a、current redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例在线current redo损坏 场景模拟: 1.查看当前日志状态 SYS@orcl> col member for a40; SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group# GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 20 /u02/oradata/ORCL/redo03.log 200 NO CURRENT 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 0 /u02/oradata/ORCL/redo01.log 200 YES UNUSED 2.模拟current redolog损坏 [oracle@enmotech ORCL]$ echo 1 >> /u02/oradata/ORCL/redo03.log 3.commit提交数据,观察alter_sid.log报错 2020-05-31T11:49:31.281843+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_7598.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T11:49:31.281928+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_7598.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T11:49:31.320587+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_7880.trc: ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' 4.清除当前日志组数据(一定不要关闭数据库,避免数据丢失) SYS@orcl> alter system switch logfile; 系统已更改。 SYS@orcl> alter database clear unarchived logfile group 3; 数据库已更改。 5.打开数据库 SYS@orcl> alter database open; 数据库已更改。 1.4 a、current redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例不正常关闭后current redo损坏 场景模拟: 1.查看当前日志状态 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 22 /u02/oradata/ORCL/redo03.log 200 NO CURRENT 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 0 /u02/oradata/ORCL/redo01.log 200 YES UNUSED 2.强关数据库 SYS@orcl> shutdown abort; ORACLE 例程已经关闭。 3.模拟current redolog损坏 [oracle@enmotech ~]$ echo 1 >> /u02/oradata/ORCL/redo03.log 4.打开数据库 SYS@orcl> startup ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 5.查看告警日志 2020-05-31T12:12:03.310379+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_9337.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T12:12:03.362444+08:00 Slave encountered ORA-10388 exception during crash recovery 2020-05-31T12:12:03.375439+08:00 Slave encountered ORA-10388 exception during crash recovery 2020-05-31T12:12:03.378174+08:00 Aborting crash recovery due to error 313 2020-05-31T12:12:03.378309+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_9337.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T12:12:03.378837+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_9337.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 ORA-313 signalled during: ALTER DATABASE OPEN... 2020-05-31T12:12:03.390997+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_9343.trc: ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T12:12:03.476462+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_9343.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T12:12:03.552455+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_9343.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 恢复数据 SYS@orcl> recover database until cancel; ORA-00279: 更改 2991918 (在 05/31/2020 12:02:08 生成) 对于线程 1 是必需的 ORA-00289: 建议: /u02/oradata/orcl_arch_log/1_22_1040302643.arc ORA-00280: 更改 2991918 (用于线程 1) 在序列 #22 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: 无法打开归档日志 '/u02/oradata/orcl_arch_log/1_22_1040302643.arc' ORA-27037: 无法获得文件状态 Linux-x86_64 Error: 2: No such file or directory Additional information: 7 ORA-00308: 无法打开归档日志 '/u02/oradata/orcl_arch_log/1_22_1040302643.arc' ORA-27037: 无法获得文件状态 Linux-x86_64 Error: 2: No such file or directory Additional information: 7 ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误 ORA-01194: 文件 1 需要更多的恢复来保持一致性 ORA-01110: 数据文件 1: '/u02/oradata/ORCL/system01.dbf' SYS@orcl> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-00603: ORACLE server session terminated by fatal error ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [], [], [], [], [], [], [], [] 进程 ID: 9733 会话 ID: 237 序列号: 18481 SYS@orcl> recover database until cancel; ERROR: ORA-03114: 未连接到 ORACLE SYS@orcl> quit 6.启动数据库到mount状态 SYS@orcl> startup mount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 7.修改undo表空间 SYS@orcl> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ temp_undo_enabled boolean FALSE undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 SYS@orcl> alter system set undo_management=manual scope=spfile; 系统已更改。 SYS@orcl> alter system set undo_tablespace=system scope=spfile; 系统已更改。 SYS@orcl> shu immediate; ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SYS@orcl> startup mount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 8.打开数据库 SYS@orcl> alter database open; 数据库已更改。 1.5 a、current redo文件损坏; b、数据库非归档模式; c、需要写入数据文件 d、实例在线current redo损坏 场景模拟: 1.查看当前日志状态 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 18 /u02/oradata/ORCL/redo03.log 200 NO CURRENT 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 16 /u02/oradata/ORCL/redo01.log 200 YES INACTIVE 2.查看告警日志 2020-05-31T13:31:10.075933+08:00 Thread 1 advanced to log sequence 19 (LGWR switch) Current log# 1 seq# 19 mem# 0: /u02/oradata/ORCL/redo01.log 2020-05-31T13:31:22.970981+08:00 alter database clear logfile group 3 ORA-1624 signalled during: alter database clear logfile group 3... 2020-05-31T13:31:23.058733+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_4507.trc: ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T13:31:23.257429+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_4507.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T13:31:23.334583+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_mz00_4507.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 Checker run found 2 new persistent data failures 2020-05-31T13:32:52.559008+08:00 alter database clear logfile group 3 2020-05-31T13:32:52.559989+08:00 Clearing online log 3 of thread 1 sequence number 18 2020-05-31T13:32:52.562391+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4056.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 2020-05-31T13:32:52.562794+08:00 Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4056.trc: ORA-00313: 无法打开日志组 3 (用于线程 1) 的成员 ORA-00312: 联机日志 3 线程 1: '/u02/oradata/ORCL/redo03.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 3.切换redo日志 SYS@orcl> alter system switch logfile; 系统已更改。 4.归档当前的redo日志 SYS@orcl> alter system checkpoint; 系统已更改。 5.清除归档日志 SYS@orcl> alter database clear logfile group 3; 数据库已更改。 6.查看当前日志状态 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 0 /u02/oradata/ORCL/redo03.log 200 NO UNUSED 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 19 /u02/oradata/ORCL/redo01.log 200 NO CURRENT 1.6 a、current redo文件损坏; b、数据库非归档模式; c、需要写入数据文件 d、实例不正常关闭后current redo损坏 场景模拟: 1.查看当前日志状态 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; GROUP# SEQUENCE# MEMBER M ARC STATUS ---------- ---------- ---------------------------------------- ---------- --- ---------------- 3 0 /u02/oradata/ORCL/redo03.log 200 NO UNUSED 2 17 /u02/oradata/ORCL/redo02.log 200 YES INACTIVE 1 19 /u02/oradata/ORCL/redo01.log 200 NO CURRENT 2.模拟current redolog损坏 echo 1 >> /u02/oradata/ORCL/redo01.log 3.强关数据库 SYS@orcl> shutdown abort; ORACLE 例程已经关闭。 4.恢复数据库 SYS@orcl> startup nomount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes SYS@orcl> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 系统已更改。 SYS@orcl> shu immediate; ORA-01507: ?????? ORACLE 例程已经关闭。 SYS@orcl> startup mount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 SYS@orcl> recover database until cancel; ORA-00279: 更改 2983632 (在 05/31/2020 13:32:44 生成) 对于线程 1 是必需的 ORA-00289: 建议: /u02/oradata/orcl_arch_log/1_19_1040302643.arc ORA-00280: 更改 2983632 (用于线程 1) 在序列 #19 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} /u02/oradata/orcl_arch_log/1_19_1040302643.arc ORA-00308: 无法打开归档日志 '/u02/oradata/orcl_arch_log/1_19_1040302643.arc' ORA-27037: 无法获得文件状态 Linux-x86_64 Error: 2: No such file or directory Additional information: 7 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} /u02/oradata/ORCL/redo01.log ORA-00308: 无法打开归档日志 '/u02/oradata/ORCL/redo01.log' ORA-27046: 文件大小不是逻辑块大小的倍数 Additional information: 1 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} /u02/oradata/ORCL/redo02.log ORA-00310: 归档日志包含序列 17; 要求序列 19 ORA-00334: 归档日志: '/u02/oradata/ORCL/redo02.log' ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误 ORA-01194: 文件 1 需要更多的恢复来保持一致性 ORA-01110: 数据文件 1: '/u02/oradata/ORCL/system01.dbf' SYS@orcl> recover database using backup controlfile until cancel; ORA-00279: 更改 2983632 (在 05/31/2020 13:32:44 生成) 对于线程 1 是必需的 ORA-00289: 建议: /u02/oradata/orcl_arch_log/1_19_1040302643.arc ORA-00280: 更改 2983632 (用于线程 1) 在序列 #19 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: 无法打开归档日志 '/u02/oradata/orcl_arch_log/1_19_1040302643.arc' ORA-27037: 无法获得文件状态 Linux-x86_64 Error: 2: No such file or directory Additional information: 7 ORA-00308: 无法打开归档日志 '/u02/oradata/orcl_arch_log/1_19_1040302643.arc' ORA-27037: 无法获得文件状态 Linux-x86_64 Error: 2: No such file or directory Additional information: 7 SYS@orcl> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-00603: ORACLE server session terminated by fatal error ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [ktcpoptx:!cmt top lvl], [], [], [], [], [], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [], [], [], [], [], [], [], [] 进程 ID: 5296 会话 ID: 237 序列号: 10783 5.切换undo [oracle@enmotech ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 5月 31 13:44:00 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. 已连接到空闲例程。 SYS@orcl> startup mount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 SYS@orcl> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ temp_undo_enabled boolean FALSE undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1 SYS@orcl> alter system set undo_management=manual scope=spfile; 系统已更改。 SYS@orcl> alter system set undo_tablespace=system scope=spfile; 系统已更改。 [oracle@enmotech ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 5月 31 13:50:08 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. 连接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SYS@orcl> shu immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SYS@orcl> startup mount; ORACLE 例程已经启动。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 989855744 bytes Database Buffers 536870912 bytes Redo Buffers 7639040 bytes 数据库装载完毕。 SYS@orcl> alter database open; 数据库已更改。 7.重建undo即可恢复数据库 2 active redo文件恢复介绍 --------------------------------------------------------------------------------------------------------------------------------- 做检查点切换 alter system checkpoint; 如成功,按照 inactive 损坏处理。否则,按 current 损坏处理。 ---------------------------------------------------------------------------------------------------------------------------------- 2.1 a、active redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例在线时损坏 e、未归档 (不要关闭数据库,直接执行alter database clear unarchived logfile group n,不会丢数据) 2.2 a、active redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例不正常关闭时损坏 e、未归档 (会丢数据) 2.3 a、active redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例在线时损坏 e、已归档 (不要关闭数据库,直接执行alter database clear unarchived logfile group n,不会丢数据) 2.4 a、active redo文件损坏; b、数据库归档模式; c、需要写入数据文件 d、实例不正常关闭时损坏 e、已归档 (不会丢数据) 2.5 a、active redo文件损坏; b、数据库非归档模式; c、需要写入数据文件 d、实例在线时损坏 e、不归档 (不要关闭数据库,直接执行alter database clear logfile group n,不会丢数据) 2.6 a、active redo文件损坏; b、数据库非归档模式; c、需要写入数据文件 d、实例在线时损坏 e、不归档 (会丢数据) 3.inactive redo文件恢复介绍 3.1 a、inactive redo文件损坏 b、不需要写入数据文件信息 c、实例在线损坏和实例异常关机损坏 d、数据库归档模式; e、未归档 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; SYS@orcl> alter database clear unarchived logfile group n; (在线直接执行上述命令,实例异常关机,启动到mount执行, 不会丢失数据,n损坏的inactive日志组,可以在mount状态查看或者告警日志查看) 3.2 a、inactive redo文件损坏 b、不需要写入数据文件信息 c、实例在线损坏和实例异常关机损坏 d、数据库归档模式; e、已归档 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; SYS@orcl> alter database clear logfile group n; (在线直接执行上述命令,实例异常关机,启动到mount执行, 不会丢失数据,n损坏的inactive日志组,可以在mount状态查看或者告警日志查看) 3.3 a、inactive redo文件损坏 b、不需要写入数据文件信息 c、实例在线损坏和实例异常关机损坏 d、数据库非归档模式; e、不归档 SYS@orcl> select l.group#, l.sequence#, lf.member, l.bytes/1024/1024 M, l.archived, l.status from v$log l, v$logfile lf where l.group#=lf.group#; SYS@orcl> alter database clear logfile group n; (在线直接执行上述命令,实例异常关机,启动到mount执行, 不会丢失数据,n损坏的inactive日志组,可以在mount状态查看或者告警日志查看)
redo 恢复的几种方式
猜你喜欢
转载自blog.51cto.com/hnyuanzijian/2506076
今日推荐
周排行