环境同上一篇

模拟处于active状态的redo log损坏

sesion 1

SYS@ orcl >/                         

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE      MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 19 52428800 512 2 NO CURRENT 9777054 06-JUN-19 2.8147E+14
2 1 17 52428800 512 1 YES ACTIVE 9776201 06-JUN-19 9776627 06-JUN-19
3 1 18 52428800 512 1 YES ACTIVE 9776627 06-JUN-19 9777054 06-JUN-19

session 2

[oracle@DSI ~]$ sqlplus test/test
SQL> create table t7 (id int,name varchar2(100));
Table created. SQL> begin
for i in 1 .. 50000000
loop
insert into t7 values(i,'AAAAAA');
end loop;
commit;
end;
/

session 1

SYS@ orcl >shutdown abort;
ORACLE instance shut down.

session 2 报错

/  2    3    4    5    6    7    8
begin
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 6269
Session ID: 141 Serial number: 527

SQL> conn /as sysdba
Connected to an idle instance. SQL> startup mount;
ORACLE instance started. Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 478154296 bytes
Database Buffers 297795584 bytes
Redo Buffers 6791168 bytes
Database mounted.
SQL> set linesize 1000
SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 19 52428800 512 2 YES ACTIVE 9777054 06-JUN-19 9777480 06-JUN-19
3 1 18 52428800 512 1 YES ACTIVE 9776627 06-JUN-19 9777054 06-JUN-19
2 1 20 52428800 512 1 NO CURRENT 9777480 06-JUN-19 2.8147E+14 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ---------------------------------------------------------------- ---
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO
1 ONLINE /u01/app/oracle/oradata/orcl/redo11.log

损坏active的3号文件

[oracle@DSI ~]$ dd if=/dev/null of=/u01/app/oracle/oradata/orcl/redo03.log bs=512 count=20
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000121828 s, 0.0 kB/s

打开报错

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo03.log'
ORA-27047: unable to read the header block of file
Linux-x86_64 Error: 25: Inappropriate ioctl for device
Additional information: 1
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery SQL> recover database until cancel;
ORA-00279: change 9776627 generated at 06/06/2019 09:25:59 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_18_ghjtxbjq_.arc
ORA-00280: change 9776627 for thread 1 is in sequence #18 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 9777054 generated at 06/06/2019 09:26:02 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_19_ghjtxfjt_.arc
ORA-00280: change 9777054 for thread 1 is in sequence #19
ORA-00278: log file '/u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_18_ghjtxbjq_.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 9777480 generated at 06/06/2019 09:26:05 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_20_%u_.arc
ORA-00280: change 9777480 for thread 1 is in sequence #20
ORA-00278: log file '/u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_19_ghjtxfjt_.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00308: cannot open archived log '/u01/app/oracle/fra/ORCL/archivelog/2019_06_06/o1_mf_1_20_%u_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3 ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'
[oracle@DSI ~]$ tail -n 100 /tmp/pfile.ora

修改隐含参数

*._allow_resetlogs_corruption=true
*._allow_error_simulation=true

[oracle@DSI ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 6 09:32:52 2019

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup pfile='/tmp/pfile.ora' mount;
ORACLE instance started. Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 478154296 bytes
Database Buffers 297795584 bytes
Redo Buffers 6791168 bytes
Database mounted.
SQL> alter database open resetlogs; Database altered.
SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 1 52428800 512 2 YES ACTIVE 9777481 06-JUN-19 9778409 06-JUN-19
2 1 2 52428800 512 1 YES ACTIVE 9778409 06-JUN-19 9778925 06-JUN-19
3 1 3 52428800 512 1 NO CURRENT 9778925 06-JUN-19 2.8147E+14
SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered.
SQL> select * from test.t7; no rows selected

查看错误日志
[oracle@DSI ~]$ tail -f -n 100 /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
##处于active/current redo log损坏,进行强制启动打开的话,比较小的库最好是进行导出导出,防止出现其他错误,比较大的库(上百t)迁移的时间就比较长
如果有报错,有些可能修复,有些不能修复的致命错误比如ora-600等,还是导出导入修复比较安全

07 归档模式 Active redo log丢失或损坏的恢复的更多相关文章

  1. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复

    1.归档模式有备份,丢失数据文件的恢复归档模式有备份,不管丢失什么数据文件,直接在RMAN下RESTOER--->RECOVER--->OPEN即可. RMAN> STARUP MO ...

  2. 07 oracle 非归档模式 inactive/active/current redo log损坏的恢复

    在非归档模式下缺失Redo Log后的恢复 将之前的归档模式修改为非归档 SQL> shutdown immediate; SQL> startup mount SQL> alter ...

  3. 07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], [0], [9710724], [0], [9711142], [], [], [], [], [], [], []

    07 oracle 归档模式 inactive/current redo log损坏修复--以及错误ORA-00600: internal error code, arguments: [2663], ...

  4. 【恢复】 Redo文件丢失的恢复

    第一章 Redo文件丢失的恢复 1.1  online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...

  5. Oracle Redo Log 机制 小结(转载)

    Oracle 的Redo 机制DB的一个重要机制,理解这个机制对DBA来说也是非常重要,之前的Blog里也林林散散的写了一些,前些日子看老白日记里也有说明,所以结合老白日记里的内容,对oracle 的 ...

  6. Oracle启动和归档模式

    数据库运行 Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤: 启动实例–>加载数据库–>打开数据库 因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操 ...

  7. 3000帧动画图解MySQL为什么需要binlog、redo log和undo log

    全文建立在MySQL的存储引擎为InnoDB的基础上 先看一条SQL如何入库的: 这是一条很简单的更新SQL,从MySQL服务端接收到SQL到落盘,先后经过了MySQL Server层和InnoDB存 ...

  8. 2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林. 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历 ...

  9. RAC本地数据文件迁移至ASM的方法--非归档模式

    系统环境:rhel6.2_x64+Oracle RAC11g 操作过程: 1.非归档模式 SQL> archive log list; Database log mode No Archive ...

随机推荐

  1. 原生js格式化json和格式化xml的方法

    在工作中一直看各位前辈的博客解决各种问题,对我的帮助很大,非常感谢! 之前一直比较忙没有写博客,终于过年有了点空闲时间,可以把自己积累的东西分享下,笔记中的部分函数不是自己写的,都是工作中一点点积累的 ...

  2. MySQL之Foreign_Key

    MySQL之Foregin_Key 一\\一对多 一.员工表和部门表 dep emp 类似与我们将所有的代码都写在一个py文件内 确立标语表之间的关系 思路:一定要要换位思考问题(必须两方都考虑周全之 ...

  3. python 变量、列表、元组、字典

    python 变量.列表.元组.字典 1.python 变量赋值 2.ptython  列表 3.python 元组 4.python  字典 1.  Python变量赋值     1.1变量的命名规 ...

  4. python打包命令

    打包成exe方法 (1)切换到该文件夹 (2)pyinstaller -F py文件 (py文件要英文才行) -F 生成单个可执行文件 -w 去掉控制台窗口 -p 自定义需要加载的类路径 -i 可执行 ...

  5. centos7 安装 tesseract4.1

    官网大法好,其他方法需要装好多依赖,还没安装成功...     yum-config-manager --add-repo https://download.opensuse.org/reposito ...

  6. mock.js模拟ajax数据请求

    在我们开发过程中存在着前端页面ui完成了,但是没有接口进行联调数据的情况,现在介绍一下用mock.js来完成数据的请求.这样在后期我们的后台接口完成后只需要更改请求的接口名字即可!前提是你的模拟字段名 ...

  7. EffectiveC++条款04:确定对象被使用前已先被初始化

    不要混淆赋值和初始化,对于大多数类型而言,比起先调用默认构造函数然后调用赋值操作符,只调用一次拷贝构造函数是高效的 对于内置类型,也需要成员初值列(member initialization list ...

  8. Kettle整理

    下载kettle版本 (1)hadoop version 查看hadoop的版本    hadoop2.6 (2)则在data-integration\plugins\pentaho-big-data ...

  9. Python重写父类方法__len__

    class Liar(list): def __len__(self): return super().__len__() + 3 # 直接写 super().__len__() 而没有 return ...

  10. Mybatis foreach批量插入

    1.foreach的属性 item:集合中元素迭代时的别名,必填 index:在list和array中,index是元素的序号:在map中,index是元素的key,可选 open:foreach代码 ...