最近偶尔会接到一条短信,提示某个备库中出现了ORA-00600的错误。对于这个问题还真不能心存侥幸,自己带着疑问查看了一下,
这是一个一主两备的库,主库和其中的一个备库没有任何的ORA-00600的错误,只有这一个备库中偶尔会出现ORA-00600的错误。
这个问题如果放大还是很严重的,比如主库出现问题了,如果切换到这个备库,那么ORA-00600的错误就会直接转移过来,这个时候这儿备库就有点鸡肋的味道了。所以这个问题一种思路就是重新搭建备库,另外一种就是手工修复。我还是更希望通过手工修复的方式来先来看看能不能解决掉这个问题。
报错的备库数据库日志如下:
Media Recovery Waiting for thread 1 sequence 654 (in transit)
Recovery of Online Redo Log: Thread 1 Group 7 Seq 654 Reading mem 0
  Mem# 0: /U01/app/oracle/fast_recovery_area/TESTSOB0/onlinelog/o1_mf_7_9lo8zrpc_.log
Mon Sep 21 08:36:02 2015
Archived Log entry 650 added for thread 1 sequence 653 ID 0xfe9af939 dest 1:
Mon Sep 21 12:18:09 2015
Errors in file /U01/app/oracle/diag/rdbms/testb0/testob0/trace/ordermob0_ora_26830.trc  (incident=403849):
ORA-00600: 鍐呴儴閿欒?浠g爜, 鍙傛暟: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Incident details in: /U01/app/oracle/diag/rdbms/testob0/testob0/incident/incdir_403849/testob0_ora_26830_i403849.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 12:18:11 2015
Sweep [inc][403849]: completed
Sweep [inc2][403849]: completed
Mon Sep 21 12:18:11 2015
Dumping diagnostic data in directory=[cdmp_20150921121811], requested by (instance=1, osid=26830), summary=[incident=403849].
Mon Sep 21 12:37:06 2015
Errors in file /U01/app/oracle/diag/rdbms/testob0/testob0/trace/testob0_ora_26766.trc  (incident=403918):
ORA-00600: 鍐呴儴閿欒?浠g爜, 鍙傛暟: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Incident details in: /U01/app/oracle/diag/rdbms/testob0/ordermob0/incident/incdir_403918/testob0_ora_26766_i403918.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 12:37:08 2015
Sweep [inc][403918]: completed
Sweep [inc2][403918]: completed
Mon Sep 21 12:37:08 2015
Dumping diagnostic data

而对于日志中提到的trace文件,得到的内容如下:
/U01/app/oracle/diag/rdbms/testob0/testob0/trace/testob0_ora_26766.trc 
*** 2015-09-21 12:37:04.930
*** SESSION ID:(1898.8357) 2015-09-21 12:37:04.930
*** CLIENT ID:() 2015-09-21 12:37:04.930
*** SERVICE NAME:(SYS$USERS) 2015-09-21 12:37:04.930
*** MODULE NAME:(JDBC Thin Client) 2015-09-21 12:37:04.930
*** ACTION NAME:() 2015-09-21 12:37:04.930
 
* kdsgrp1-1: *************************************************
            row 0x01c55b6f.1f continuation at
            0x01c55b6f.1f file# 7 block# 351087 slot 31 not found
KDSTABN_GET: 0 ..... ntab: 1
curSlot: 31 ..... nrows: 32
kdsgrp - dump CR block dba=0x01c55b6f
Block header dump:  0x01c55b6f
 Object id on Block? Y
 seg/obj: 0x12739  csc: 0x00.10bfb352  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1c55481 ver: 0x01 opc: 0
     inc: 0  exflg: 0

而第一次抛出ORA-00600的错误,可以追溯到2014年了,所以还是一个遗留问题。
这个错误代表的含义是对应的索引ROWID,在数据表中找不到记录,还是有数据不一致的情况。
从trace文件里也可以看到,其实是在运行一条sql语句的时候抛出来的错误。
SELECT  nvl(count(distinct USER_ID),0) as userCount,nvl(SUM(goods_price),0) as total FROM TEST_ORDER WHERE (IS_SANDBOX   = 0 or IS_SANDBOX is null) and  (order_status = 2 or order_status = 4) and UPDATE_DATE >=to_date(:1,'yyyy-mm-dd') and UPDATE_DATE <to_date(:2,'yyyy-mm-dd')+1  and (substr(MEDIA_CHANNEL_ID,0,2)='10' or substr(MEDIA_CHANNEL_ID,0,2)='20')  AND app_id = :3
至于问题怎么定位,trace中的内容值得好好琢磨一下。
* kdsgrp1-1: *************************************************
            row 0x01c55b6f.1f continuation at
            0x01c55b6f.1f file# 7 block# 351087 slot 31 not found
这个就代表错误出现在7号数据文件,351087号数据块上。
可以通过下面的语句来定位错误是否在TEST_ORDER这个表上
SQL> select owner,segment_name,segment_type from dba_extents where file_id=7 and block_id<=351087 and (block_id+blocks)>=351087;
OWNER                SEGMENT_NAME         SEGMENT_TYPE
-------------------- -------------------- ------------------------------------------------------
TESTOB             TEST_ORDER             TABLE

对于这个问题,MOS中已经提供了完整的解决方法。
ORA-600 [kdsgrp1] During Table/Index Full Scans (文档 ID 468883.1)

一种是通过dump出来数据,然后设置对应的事件,重建修复
#1 alter system dump datafile 7 block 351087;            
另外一种是直接声明跳过那些坏块,可以直接使用dbms_repair来修复。
  execute dbms_repair.skip_corrupt_blocks('TESTOB','TEST_ORDER'); 
但是因为问题发生在备库所以还是无法运行这个包的。
SQL>    execute dbms_repair.skip_corrupt_blocks('TESTOB','TEST_ORDER'); 
BEGIN dbms_repair.skip_corrupt_blocks('TESTOB','TEST_ORDER'); END;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
ORA-06512: at "SYS.DBMS_REPAIR", line 419
ORA-06512: at line 1
所以还是需要在主库来运行,尽管主库中还是没有这个错误的。
SQL>    execute dbms_repair.skip_corrupt_blocks('TESTOB','TEST_ORDER'); 
PL/SQL procedure successfully completed.
执行过程很快,修复后自己也在观察是否还收到过ORA的错误警告,按照目前的情况来看,这个问题应该还是顺利解决了,因为已经过去了快两周,之前每一两天就会抛个错误。

备库中ORA-00600错误的简单修复相关推荐

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

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

  2. Oracle Dataguard中备库中归档日志不同步

    环境:RAC+单机 Dataguard 问题:启动备库到ADG模式时,发现后台归档日志并不同步 1.在备库中发现日志的归档日志不同步,内容如下: MRP0: Background Media Reco ...

  3. vim编辑器的基本操作以及编译过程中常见的错误和简单解决方法

    1.正常模式:对文本内容只能进行浏览,不可修改.在任何模式下按下Esc键就可返回正常模式 2.编辑模式:可以向文本中添加删除修改内容,直接输入i键即可进入编辑模式 3.退出vim:输入Esc键返回正常 ...

  4. hadoop 修复hdfs中文件块错误 和文件修复 Error: java.io.IOException: Cannot obtain block length for LocatedBlock

    一:问题 Error: java.io.IOException: Cannot obtain block length for LocatedBlock Error: java.io.IOExcept ...

  5. 【转载】mysql主键的缺少导致备库hang

    最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...

  6. mysql 备库 hang住_mysql主键的缺少导致备库hang住

    最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...

  7. Oracle数据库adg数据没同步,Oracle 11g备库无法开启ADG的原因分析

    今天碰到一个有些奇怪的问题,但是奇怪的现象背后都是有本质的因果. 下午在做一个环境的检查时,发现备库是在mount阶段,这可是一个11gR2的库,没有ADG实在是太浪费了,对于这种情况感觉太不应该了. ...

  8. oracle11g dataguard物理备库搭建

    Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...

  9. oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)

    Dataguard 环境: 操作系统:Redhat6.4 Primary数据库: IP 地址:192.168.1.122 数据库SID:ora11g DB_UNIQUE_NAME:ora11g_pri ...

最新文章

  1. java io 缓冲流_记忆系列-Java IO的缓存输入输出流(高效流)
  2. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
  3. h5自定义相机界面_MIUI 12全新相机发布,多款相机图标进行重绘,可升级机型一览...
  4. .NET Framework 4.7 安装
  5. 功能安全-26262(2018) part5
  6. 高德地图 JS API - 根据地名实现标记定位
  7. jar打包 剔除第三方依赖以及它的依赖_为什么Spring Boot的 jar 可以直接运行?
  8. Java并发编程,3分分钟深入分析volatile的实现原理
  9. C#:Dockpanel的一些入门的基本操作
  10. mac电脑下Tomcat和Apach配置流程(超详细)
  11. 【作品】超级玛丽射击版
  12. docker 加速镜像 阿里云镜像
  13. 使用git上传项目到github
  14. input和raw_input的区别
  15. Linux下rpm安装lrzsz
  16. mac 发现 添加 连接 局域网内打印机
  17. ROS笔记(38) Xbox360手柄控制移动
  18. 小程序AppId-当前开发者未绑定此AppId,请到小程序管理后台操作后重试
  19. 致敬2021——中国汽车,拆掉思维里的墙
  20. linux服务器在没有网的条件下,怎么安装使用numpy呢

热门文章

  1. c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...
  2. pythonapi是什么_python接口自动化(一)--什么是接口、接口优势、类型(详解)...
  3. Angular Http
  4. 实验四-常用图像增强方法
  5. 使用version遇到的那些坑
  6. iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析
  7. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(6):各种公共方法及工具类的封装
  8. 10-18 JS基础复习笔记
  9. 【Android】ActionBar的使用(1)
  10. 20位程序员关于求职的疑问,以及我给出的参考答案