一. 数据库断电致使控制文件不一致的恢复方法
数据库服务器意外断电出现ORA-00600[kcratr_nab_less_than_odr],不能open数据库
1.open数据库报ORA-00600[kcratr_nab_less_than_odr]

SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189],
[43531], [43569], [], [], [], [], [], [], []

2.查看alert日志

Wed Jan 11 13:56:16 2012
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
parallel recovery started with 2 processes
Started redo scan
Completed redo scan
read 54591 KB redo, 0 data blocks need recovery
Errors in file d:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc  (incident=818557):
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], []
Incident details in: d:\dbdms\diag\rdbms\dbdms\dbdms\incident\incdir_818557\dbdms_ora_3936_i818557.trc
Aborting crash recovery due to error 600
Errors in file d:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc:
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], []
Errors in file d:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc:
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], []
ORA-600 signalled during: ALTER DATABASE OPEN...
Trace dumping is performing id=[cdmp_20120110214555]

3.查看trace文件

Trace file d:\dbdms\diag\rdbms\dbdms\dbdms\trace\dbdms_ora_3108.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Windows NT Version V6.1 Service Pack 1
CPU                 : 2 - type 8664, 2 Physical Cores
Process Affinity    : 0x0x0000000000000000
Memory (Avail/Total): Ph:2250M/4060M, Ph+PgF:5868M/8119M
Instance name: dbdms
Redo thread mounted by this instance: 1
Oracle process number: 17
Windows thread id: 3108, image: ORACLE.EXE (SHAD)
…………………………
WARNING! Crash recovery of thread 1 seq 99189 is
ending at redo block 43531 but should not have ended before
redo block 43569
Incident 826550 created, dump file: d:\dbdms\diag\rdbms\dbdms\dbdms\incident\incdir_826550\dbdms_ora_3108_i826550.trc
ORA-00600: ??????, ??: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], [] ORA-00600: ??????, ??: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], []
ORA-00600: ??????, ??: [kcratr_nab_less_than_odr], [1], [99189], [43531], [43569], [], [], [], [], [], [], []

通过alert和trace中的内容可以知道,数据库需要恢复到rba到43569,但是因为某种原因实例恢复的时候,只能利用1 thread 99189 seq#,恢复rba到43531。从而导致数据库无法正常open

This Problem is caused by Storage Problem of the Database Files. The
Subsystem (eg. SAN) crashed while the Database was open. The Database
then crashed since the Database Files were not accessible anymore.
This caused a lost Write into the Online RedoLogs and so Instance
Recovery is not possible and raising the ORA

4.解决方法
Sql代码

SQL> SELECT STATUS FROM V$INSTANCE;  STATUS
------------
MOUNTED

–尝试直接recover database

SQL> RECOVER DATABASE ;
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复

–提示不用恢复

–再打开数据库,还是kcratr_nab_less_than_odr错误警告

SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [99189],
[43531], [43569], [], [], [], [], [], [], []

–尝试不完全恢复

SQL> RECOVER DATABASE UNTIL CANCEL;
ORA-10879: error signaled in parallel recovery slave
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: 'D:\DBDMS\DATA\SYSTEM01.DBF'

–重建控制文件

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 'D:/1.TXT';

数据库已更改。

SQL> SHUTDOWN IMMEDIATE;
ORA-01109: 数据库未打开  已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP NOMOUNT;
ORACLE 例程已经启动。  Total System Global Area  417546240 bytes
Fixed Size                  2176328 bytes
Variable Size             268438200 bytes
Database Buffers          138412032 bytes
Redo Buffers                8519680 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "DBDMS" NORESETLOGS  NOARCHIVELOG  2      MAXLOGFILES 16  3      MAXLOGMEMBERS 3  4      MAXDATAFILES 100  5      MAXINSTANCES 8  6      MAXLOGHISTORY 18688  7  LOGFILE  8    GROUP 1 'D:\DBDMS\LOG\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,  9    GROUP 2 'D:\DBDMS\LOG\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,  10    GROUP 3 'D:\DBDMS\LOG\REDO03.LOG'  SIZE 50M BLOCKSIZE 512  11  DATAFILE  12    'D:\DBDMS\DATA\SYSTEM01.DBF',  13    'D:\DBDMS\DATA\SYSAUX01.DBF',  14    'D:\DBDMS\DATA\RBSG01.DBF',  15    'D:\DBDMS\DATA\DATA01.DBF',  16    'D:\DBDMS\DATA\INDX01.DBF',  17    'D:\DBDMS\DATA\DATA02.DBF',  18    'D:\DBDMS\DATA\DATA03.DBF',  19    'D:\DBDMS\DATA\DATA04.DBF',  20    'D:\DBDMS\DATA\INDX02.DBF',  21    'D:\DBDMS\DATA\SYSTEM02.DBF'  22  CHARACTER SET ZHS16GBK  23  ;

控制文件已创建。

--继续尝试恢复
SQL> RECOVER DATABASE ;
完成介质恢复。
SQL> ALTER DATABASE OPEN;  数据库已更改。
--open成功  SQL> SELECT STATUS FROM V$INSTANCE;STATUS
------------
MOUNTED

在这次恢复中,主要就是重建控制文件,然后直接恢复成功,如果redo有损坏,那么可能需要使用不完全恢复,然后使用resetlogs打开数据库!

Oracle数据库断电致使控制文件不一致的恢复方法相关推荐

  1. oracle更改语句用 怎么站位,Oracle 数据库如何修改控制文件的位置

    数据库通过控制文件保持数据库的完整性,一旦控制文件被破坏数据库讲无法启动,因此建议采用多路控制文件或者备份控制文件的方法. 控制文件是数据库建立的时候自动生成的二进制文件,只能通过实例进行修改,如果手 ...

  2. 数据字典恢复mysql数据_恢复之数据字典和控制文件不一致的恢复(一)

    在执行恢复后,应该检查数据库的alert文件,看是否出现控制文件中的数据文件名称和数据字典中数据文件名称无法一一对应的现象. 这篇文章描述通过RESETLOGS方式打开数据库时,如果发现不一致情况及解 ...

  3. oracle日志文件打开,oracle日志文件和控制文件损坏的恢复

    oracle日志文件和控制文件损坏的恢复 恢复步骤: 1.加入_allow_resetlogs_corruption=true,_corrupted_rollback_segments=true,_o ...

  4. Oracle 10G RAC ASM - 控制文件多路存储

    10G RAC中将controlfile进行多元存放(非OMF格式) 1,确定control_files参数 SQL> show parameter control_files NAME     ...

  5. Oracle数据库的impdp导入操作以及dba_directories使用方法

    Oracle数据库的impdp导入操作以及dba_directories使用方法 今天从同事那里拿到了导出的dmp文件,当导入时发现了很多问题,记下来以免以后忘记,以下是本人的操作过程: 1.首先是创 ...

  6. Oracle数据库中scott用户不存在的解决方法

    Oracle数据库中scott用户不存在的解决方法 参考文章: (1)Oracle数据库中scott用户不存在的解决方法 (2)https://www.cnblogs.com/hjweifans/p/ ...

  7. oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...

    关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...

  8. 如何快速恢复误删文件?文件误删的恢复方法-附软件

    来源:https://blog.yoodb.com/yoodb/article/detail/1606 怎么快速恢复删除文件?俗话说覆水难收,其实很多人也认为如果将文件删除了,就如同泼出去的谁,是很难 ...

  9. U盘中毒后文件被隐藏恢复方法

    U盘中毒后文件被隐藏恢复方法 目录 1.一些碎碎念 2.正式开始吧 目录 这个方法应该只适用于文件被病毒隐藏的情况,如果被删除还得另寻方法. 如何判断文件是否被隐藏,一种简单的方法是看U盘的容量,比如 ...

最新文章

  1. DELPHI 中 Window 消息大全使用详解
  2. python将图像转换为8位单通道_【图像处理】OpenCV系列三十五--- equalizeHist函数详解...
  3. 搭建nginx流媒体服务器(支持HLS)
  4. [转]OC与JS的交互详解
  5. 计算机二级学校查询,计算机等级考试查询系统
  6. Linux中ftp密码输错无响应,psftp登陆输入正确用户名和密码后无响应解决办法
  7. ifpc币_劳力士手表价格表一览表
  8. mac自带录屏截图功能怎么使用?好用吗?
  9. Mybatis教程-实战
  10. 基于 Markdown 的中文文档排版规范
  11. H5制作哪家强?四大H5页面制作工具大比拼
  12. C++ OpenCV人脸图像提取
  13. 微处理器 微型计算机 单片机之间有何区别,微处理器,微计算机,微处理机,CPU,单片机,它们之间有何区别...
  14. java put方法_java 实现Put request
  15. iOS --- 使用Mixpanel来统计和分析移动APP的用户数据
  16. java smb删除指定文件,java 利用SMB向远道机器写文件
  17. el-table表单增加show-summary表尾合计,表格错位和高度计算错误
  18. Vue-什么是vuex
  19. 盘点2010年娱乐圈十大重磅事件
  20. java程序打包为可执行的.exe文件

热门文章

  1. 工作流相关讲解 转载
  2. 图形数据库neo4j视频教程
  3. 微服务应用开发入门④服务网关
  4. 【SQL注入17】绕过手法与防御
  5. C语言热电阻温度查表,PT100热电阻值与温度对照表
  6. input值变化监听事件
  7. tracking里面的性能图怎么画,类似ocean论文中的
  8. vimdiff 快捷键
  9. 2016年,上海的互联网企业是否值得加入?
  10. Unity Tilemap动态生成2d地图