墨墨导读:客户的一套开发环境,清理空间时redo被运维人员当作log误删除,一线同事先接手处理,过程中遇到问题升级本文做出分析。

接手后,数据库处于mount状态,之前恢复过程中已经做过resetlogs的操作,也设置了"_allow_resetlogs_corruption"隐藏参数为true,目前直接开库会提示需要恢复,重新进行resetlogs时报错ORA-600 [2662],起初看到这个错误心中略有些放松,根据经验,推下SCN就好了:

SQL> alter database open;alter database open*ERROR at line 1:ORA-01113: file 1 needs media recoveryORA-01110: data file 1:'/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSTEM_FNO-1_1bujd4ob.dbf'
SQL> recover database ;ORA-00283: recovery session canceled due to errorsORA-00399: corrupt change description in redo logORA-00353: log corruption near block 3 change 32581427074 time 08/25/202011:39:04ORA-00312: online log 5 thread 1: '/oradata/ODSDB/datafile/redo05.log'SQL> recover datafile 1;ORA-00283: recovery session canceled due to errorsORA-00399: corrupt change description in redo logORA-00353: log corruption near block 3 change 32581427074 time 08/25/202011:39:04ORA-00312: online log 5 thread 1: '/oradata/ODSDB/datafile/redo05.log'
SQL> alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-01139: RESETLOGS option only valid after an incomplete database recoverySQL> recover database using backup controlfile until cancel;ORA-00279: change 32581427072 generated at  needed for thread 1Specify log: {<RET>=suggested | filename | AUTO | CANCEL}autoORA-00266: name of archived log file neededORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error belowORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1:'/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSTEM_FNO-1_1bujd4ob.dbf'SQL>  alter database open resetlogs; alter database open resetlogs*ERROR at line 1:ORA-00603: ORACLE server session terminated by fatal errorORA-00600: internal error code, arguments: [2662], [7], [2516656013], [7],[2516660859], [327174016], [], [], [], [], [], []ORA-00600: internal error code, arguments: [2662], [7], [2516656012], [7],[2516660859], [327174016], [], [], [], [], [], []ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00600: internal error code, arguments: [2662], [7], [2516656008], [7],[2516660859], [327174016], [], [], [], [], [], []Process ID: 3997864Session ID: 580 Serial number: 5

重新启动到mount状态,根据上面报错计算要推进的SCN值:

SQL> select open_mode from v$database;OPEN_MODE
--------------------
MOUNTED
SQL> select current_scn from v$database;
SQL> set num 30
30217546463
select 7*power(2,32) + 2516660859 from dual;select 7*power(2,32) + 2516661000 from dual;
32581432072

使用oradebug poke进行SCN推进:

oradebug setmypid
oradebug dumpvar sga kcsgscn_
oradebug poke 0x700000000019B70 8 32581432072
oradebug dumpvar sga kcsgscn_

推进SCN后,尝试直接开库报错ORA-00399、ORA-00353、ORA-00312:

SQL> oradebug setmypidStatement processed.SQL> oradebug dumpvar sga kcsgscn_kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850SQL> oradebug poke 0x700000000019B70 8 32581432072BEFORE: [700000000019B70, 700000000019B78) = 00000000 00000000AFTER:  [700000000019B70, 700000000019B78) = 00000007 96013308SQL> oradebug dumpvar sga kcsgscn_kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000007 96013308 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850SQL> alter database open;alter database open*ERROR at line 1:ORA-00399: corrupt change description in redo logORA-00353: log corruption near block 3 change 32581427074 time 08/25/202011:39:04ORA-00312: online log 5 thread 1: '/oradata/ODSDB/datafile/redo05.log'

看起来有些麻烦,根据报错推断之前的resetlogs其实都没有完全成功。
此时查询各个checkpoint_change#都是一致的,正常应该可以open成功:

select distinct checkpoint_change# from v$database;select distinct checkpoint_change# from v$datafile;select distinct checkpoint_change# from v$datafile_header;

可事实上,即使尝试read only开库都会报错ORA-16433:

SQL> alter database open read only;alter database open read only*ERROR at line 1:ORA-16433: The database must be opened in read/write mode.

查了下这个错误,看起来控制文件有些问题,于是想重建下控制文件,结果发现命令同样报错ORA-16433:

--recreate controlfilealter database backup controlfile to trace;SQL> alter database backup controlfile to trace;alter database backup controlfile to trace*ERROR at line 1:ORA-16433: The database must be opened in read/write mode.

而正常mount下,是可以执行此命令的。

没办法,只能根据控制文件的语法,查询必要信息,然后手工构建控制文件的创建脚本:

--dbnameODSDB--select userenv('language') from dual;AMERICAN_AMERICA.AL32UTF8--nomountSTARTUP NOMOUNT--create_controlfile.sqlCREATE CONTROLFILE REUSE DATABASE "ODSDB" NORESETLOGS  NOARCHIVELOG    MAXLOGFILES 16    MAXLOGMEMBERS 3    MAXDATAFILES 1024    MAXINSTANCES 8    MAXLOGHISTORY 292LOGFILE  GROUP 1 '/oradata/ODSDB/datafile/redo01.log' size 1024M blocksize 512,  GROUP 2 '/oradata/ODSDB/datafile/redo02.log' size 1024M blocksize 512,  GROUP 3 '/oradata/ODSDB/datafile/redo03.log' size 1024M blocksize 512,  GROUP 4 '/oradata/ODSDB/datafile/redo04.log' size 1024M blocksize 512,  GROUP 5 '/oradata/ODSDB/datafile/redo05.log' size 1024M blocksize 512,  GROUP 6 '/oradata/ODSDB/datafile/redo06.log' size 1024M blocksize 512-- STANDBY LOGFILEDATAFILE  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSTEM_FNO-1_1bujd4ob.dbf',  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSAUX_FNO-2_1aujd4oa.dbf',  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-ODS_FDM_P11_FNO-3_0fujd0al.dbf',  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-USERS_FNO-4_30ujd66a.dbf',..此处省略大量数据文件输出..  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-ODS_FDM_FNO-89_08ujcris1.dbf',  '/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-ODS_FDM_FNO-00_08ujcg7n.dbf'CHARACTER SET AL32UTF8;

重建控制文件后,再次推SCN,最终恢复成功:

select 7*power(2,32)+2616661492 from dual;32681432564
--recover again..conn /as sysdbastartup nomount;@create_controlfile.sqloradebug setmypidoradebug dumpvar sga kcsgscn_oradebug poke 0x700000000019B70 8 32681432564oradebug dumpvar sga kcsgscn_
recover database using backup controlfile until cancel;autoalter database open resetlogs;

最后将隐藏参数"_allow_resetlogs_corruption"设置为false,正常重启数据库正常:

alter system set "_allow_resetlogs_corruption" = false scope=spfile;shut immediatestartup

总结:主要还是推进SCN,只是这次遇到报错ORA-16433需要重建控制文件。

墨天轮原文链接:https://www.modb.pro/db/31928(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊


视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

案例:强制开库遭遇ORA-16433的处理过程相关推荐

  1. oracle错误01653,oracle 10g 错误 ORA 01653 的解决过程

    oracle 10g 错误 ORA 01653 的解决过程 早上用户反应在操作用友NC时报错 ORA-01653 ,详细信息:ORA-01653: 表 NCV35.GL_DETAIL 无法通过 102 ...

  2. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路...

    Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

  3. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路

    Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

  4. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  5. python gui控件案例_python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例...

    PyQt5布局控件QHBoxLayout简介 采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLayout类继承自QBoxLayout 采用QHBoxLay ...

  6. 一个备库中ORA错误信息的分析 (r6笔记第69天)

    最近也在处理一些遗留的问题,所以对于使用orabbix的报警还是心怀敬畏之心,一方面是我们让它能够做全方位的监控,另一方面也让我发现我们还是存在不少的小问题,小问题虽小,但是放大了,就是大麻烦,甚至数 ...

  7. 计算机强制关机原理,电脑远程开机 ( 与开关按键作用一样可强制开关机 , 非网络唤醒(WOL) ) (ESP32 8266)...

    远程开关及功能, 而且是直接控制主机开关机键, 而不是使用 `Wake On LAN(WOL)` 的功能, 这样的好处是有绝对的控制权,就算电脑死机,也可以触发长按强制关机的命令,而且也不会出现`WO ...

  8. mysql数据表案例_mysql中库和表的简单操作案例

    mysql中库和表的简单操作案例 发布时间:2020-12-05 09:54:06 来源:亿速云 阅读:71 作者:小新 这篇文章主要介绍mysql中库和表的简单操作案例,文中介绍的非常详细,具有一定 ...

  9. pc模拟器运行多个Android,低配电脑如何强制开50个安卓模拟器挂机

    贴几个模拟器的截图,后台还有42个.这是用模拟器开软件自动抢qq红包,每月的 红包数量...大家自己看图领会. 2017-9-30 01:34 上传 下载附件 (383 KB) 使用的是14年的普通笔 ...

最新文章

  1. 书评 | 如何让开发中的各种文档变活?《活文档》阅读总结
  2. delphi与api中的加一减一函数
  3. springboot-custom starter
  4. dubbo全局异常处理_详解Dubbo无法处理自定义异常及解决方案
  5. 计算机学院毕业典礼口号,毕业典礼口号
  6. Web报表页面如何传递中文参数
  7. 丢弃Git中的本地提交
  8. 金山词霸2005开启后导致桌面刷新的问题
  9. JS中用execCommand(“SaveAs“)保存页面兼容性问题解决方案
  10. @PropertySource 注解的使用
  11. vm虚拟机开启蓝屏问题
  12. 收藏!全国计算机二级 Python 题库破解
  13. 操作系统-课堂笔记-磁盘调度(南航)
  14. dw怎么保存html格式,教你如何用Dreamweaver制作网页以及保存网页的方法--系统之家...
  15. 义隆单片机CALL 与JMP的区别
  16. win10如何修改mac地址(亲测通过)
  17. Thinkpad 蓝牙键盘 Fn 键处于锁定状态的解决方法
  18. 软件测试系列之入门篇(一)
  19. 计算机专业英语名人名言,英语名人名言(中英对照)
  20. pde与波长 sipm 关系_SPAD SiPM 激光雷达sensor 简介

热门文章

  1. inkscape使用_如何用Inkscape制作万圣节灯笼
  2. gnome boxes_如何使用GNOME Boxes的快照功能
  3. 机智云获取树莓派传来的数据_哪些数据对云来说太冒险了?
  4. devops f5_2017年排名前5的DevOps文章
  5. 公有云 私有云 混合云_您需要了解的有关混合云的知识
  6. 那一种笔记软件更好用_制作更好的面向用户软件的7种方法
  7. opensource项目_Opensource.com下一次迭代的重点
  8. C# 建立Socket连接 持续发送屏幕截图
  9. java代码着色_给java代码着色源码
  10. linux ntfs chkdsk,ntfs格式磁盘提示无法运行chkdsk解决办法