« Oracle数据恢复:断电导致的ORA-600 6006错误 | Blog首页 | 《循序渐进Oracle》第二版已经在Amazon上架 »
Oracle数据恢复:ORA-600 kdsgrp1错误解决案例
作者:eygle | 【转载请注出处】|【云和恩墨 领先的zData数据库一体机 | zCloud PaaS云管平台 | SQM SQL审核平台 | ZDBM 数据库备份一体机】
链接:https://www.eygle.com/archives/2011/07/ora-600_kdsgrp1.html
在客户的数据库中,恢复之后打开数据库后遇到如下问题,ORA-00600 kdsgrp1错误,这个错误主要指对应索引ROWID,在数据表中找不到记录,这表明出现了数据一致性问题.链接:https://www.eygle.com/archives/2011/07/ora-600_kdsgrp1.html
我们可以通过重建索引来解决,以下错误提示表明问题出现在file 3 block 32538号数据块上.
以下摘录了一段error stack :
*** ACTION NAME:(Advisor Task Maintenance) 2011-07-12 08:52:46.971*** MODULE NAME:(MMON_SLAVE) 2011-07-12 08:52:46.971*** SERVICE NAME:(SYS$BACKGROUND) 2011-07-12 08:52:46.971*** SESSION ID:(158.5) 2011-07-12 08:52:46.971row 00c07f1a.4d continuation atfile# 3 block# 32538 slot 78 not found**************************************************KDSTABN_GET: 0 ..... ntab: 1curSlot: 78 ..... nrows: 192***************************************************** 2011-07-12 08:52:46.985ksedmp: internal or fatal errorORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []Current SQL statement for this session:SELECT T.ID FROM WRI$_ADV_TASKS T, WRI$_ADV_PARAMETERS P WHERE T.ID = P.TASK_IDAND T.STATUS <> :B4 AND BITAND(T.PROPERTY, :B3 + :B2 ) = 0 AND P.NAME = 'DAYS_TO_EXPIRE' AND DECODE(P.NAME, 'DAYS_TO_EXPIRE', DECODE(P.VALUE, 'UNLIMITED', :B1 +1, 'UNUSED', T.MTIME + 30, DECODE(TO_NUMBER(P.VALUE), 0, :B1 + 1, T.MTIME + TO_NUMBER(P.VALUE))), :B1 + 1) < :B1
我们可以找到这个对象:
SQL> select owner,segment_name,segment_type from dba_extents where file_id=3 and block_id<=32538 and (block_id+blocks)>=32538;OWNER SEGMENT_NAME------------------------------ ------------------------------SEGMENT_TYPE------------------------------------SYS WRI$_ADV_PARAMETERSTABLESQL> select count(*) from WRI$_ADV_PARAMETERS;COUNT(*)----------35195
这个对象是AWR的历史表,其数据并不重要,简单点的,我们直接Truncate删掉了所有数据,消除了错误隐患:
SQL> truncate table WRI$_ADV_PARAMETERS;Table truncated.
如果问题出现在字典表上,则删除数据和重建索引就都不可能,只能通过BBED修改块来完成了.
在第一次启动数据库之后出现如下错误:
Starting background process QMNCQMNC started with pid=21, OS id=1020126Tue Jul 12 08:52:46 2011Completed: ALTER DATABASE OPENTue Jul 12 08:52:46 2011Errors in file /oracle/so/admin/bdump/so_m000_905446.trc:ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []Tue Jul 12 08:53:02 2011Errors in file /oracle/so/admin/bdump/so_m000_905446.trc:ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []ORA-06512: at "SYS.PRVT_ADVISOR", line 4889ORA-06512: at line 1
在完成数据清理后,启动数据库,原有的错误就不再出现了:
Database Characterset is ZHS16CGB231280Opening with internal Resource Manager planwhere NUMA PG = 1, CPUs = 6replication_dependency_tracking turned off (no async multimaster replication found)Starting background process QMNCQMNC started with pid=16, OS id=913466Tue Jul 12 09:16:08 2011Completed: ALTER DATABASE OPEN
逐个修正该错误,数据库可以恢复正常运行.
由于AWR数据是较为频繁写入的,所以在断电等故障时最容易遭遇损坏和不一致.
请牢记:断电是数据库的大敌.
由于AWR数据是较为频繁写入的,所以在断电等故障时最容易遭遇损坏和不一致.
请牢记:断电是数据库的大敌.
历史上的今天...
>> 2020-07-12文章:
>> 2018-07-12文章:
>> 2017-07-12文章:
>> 2010-07-12文章:
>> 2008-07-12文章:
>> 2007-07-12文章:
>> 2006-07-12文章:
By eygle on 2011-07-12 08:40 | Comments (0) | Backup&Recovery | 2837 |